Nejste přihlášen/a.
Dobrý den,
pokousim se vytvorit makro, ktere by automaticky kopirovalo hodnoty do tabulky za sebou..
Range("A8:J58").Select
promiňte, ale na to, že neznáte VBA, se pouštíte hodně vysoko. Můžu vám říct z vlastní zkušenosti, než pochopíte o čem makra jsou, trvá to pár měsíců. Než se je skutečně naučíte psát, trvá to pár let. Makra se nedají tak jednoduše vysvětlit, jak si možná představujete.
Jak jsem vám už povídal ve vaší druhé otázce, naučte se VBA. Jinak z vás bude pouze a jedině alchymista, který neví, co dělá.
Děkuji moc za reakce,
máte pravdu - je to složité. Ale já to musím do pátka nějak zvládnout. Dneska jsem vytvořil toto:
Range("A1:J38").Select
Přesnou syntax si už z hlavy moc nepamatuju, ale když to napíšu nějakým pseudokódem, mohlo by to fungovat takhle:
velice dekuji, pujdu na tom dneska zapracovat, mohl byste mi, prosim, jeste povysvetlit lepe to makro, jsem uplny zacatecnik..
doplněno 25.09.12 15:19:Mohl byste mi jeste vice makro objasnit? cesta, misto "nastaveni" v promenne slozka je cesta souboru, co se bude kopirovat? tech mam ale 1000, jak to tedy vyresim? nebo je to neco jineho?
Nejak mi to neni uplne jasne, byl byste tak laskav a pripsal mi k tomu komentare? musim to do patku rozchodil, protoze v sobotu mame meeting a musime analyzovat testy, ktere jsou na tomhle zavisle. Bez toho makra to budu kopirovat strasne dlouho a to je drina. Budu Vam moc vdecny. Nevim, jak konkretne doplnit range a co konkretne do nastaveni a princip mi neni uplne jasny. Chtel bych klidne postupne otevrit tech 1000 souboru, spustit makro a aby se to zkopirovalo. jak je definovana pozice, tak je tam cislo 1, nema tam byt A1?
No jo, tak to pak ale bude těžký.. To je jako by někdo dal mně za úkol postavit barák..
"nastaveni"má být pojmenovaný list, kde v B1 až B4 bude po řadě napsáno: cesta k souborům, písmeno označující poslední sloupec dat v načítaných souborech, počet řádků každého souboru, počet řádků oddělující seskládané skupiny záznamů.
Limit je konečný řádek, po kterém se už nebude kopírovat, protože se to do jednoho sešitu nevejde (mohlo by být 65535 - radky + 1). Na řádek s pořadovým číslem "limit"se ještě kopírovat může.
Pozice je průběžné počítadlo, které jede souborem shora dolů a ukazuje na cílové oblasti. Prostě číslo řádku, kam se vloží obsah dalšího souboru.
Klíčové slovo With vztahuje všechny následující parametry a metody s tečkou na začátku k výrazu nebo objektu, který je za slovem With, takže se nemusí opakovat. To, co tam je, je ekvivalentní s Search.target=, Search.query=,Search.results.. akorát to je kratší.
Pro vyhledání souborů se nastaví target (cíl), query (dotaz, šablona pro hledání shody) a pak se run-em hledání spustí. Správné názvy jsem si samozřejmě nepamatoval, najdete v nápovědě nebo třeba tady: vbadud.blogspot.cz/...
Výsledky vyhledávání (tj totéž, jako když hledáte ve windows, výsledkem je kolekce souborů v okně, akorát tady ji nevidíte) zpracujete v cyklu. Podmínka If je jen pro ukončení cyklu, aby to nespadlo při dosažení konce výstupního souboru.
No a samotné zpracování udělá to, že otevře soubor (tam asi budou nějaké argumenty, aby to nikdy nemohlo selhat, případně aby se soubor jen přeskočil - a třeba se někam poznamenalo, že nešel otevřít), v něm na prvním listu (číslují se snad od nuly?) označíte oblast A1 až sloupec+řádek, tedy A1:H52, dáte kopírovat. Ve výstupním sešitu (hlavni.xls) použijete Vložit jinak, pouze hodnoty. Tady koukám, že mám chybu, bude muset být workbooks(název).worksheets(název listu).range("A"& pozice).PasteSpecial, aby to vkládalo na správné místo.
Pak zavřete zkopírovaný soubor (opět s ošetřením možných dotazů) a posunete aktuální pozici o počet řádků tak, aby ukazovala na řádek, kam se bude kopírovat další soubor.
(V nastavení hledání byste ještě mohl nechat výsledky seřadit a názvy zpracovávaných si průběžně někam zapisovat, při přerušení byste mohl podle posledního názvu odstranit ze složky tu část, která proběhla, a pak napodruhé dojet jen zbytek.)
Neneseme odpovědnost za správnost informací a za škodu vzniklou jejich využitím. Jednotlivé odpovědi vyjadřují názory jejich autorů a nemusí se shodovat s názorem provozovatele poradny Poradte.cz.
Používáním poradny vyjadřujete souhlas s personifikovanou reklamou, která pomáhá financovat tento server, děkujeme.