< návrat zpět

MS Excel


Téma: Otevření sešitu z jiného aktivního sešitu rss

Zaslal/a 21.4.2021 13:54

Dobrý den,
prosím o pomoc s otevřením sešitu někde na disku a zkopírováním dat do otevřeného sešitu:

1. Mám soubory .xlsx uložené v adresáři DATA a soubory budou mít různé názvy (proměnné, ale vždy koncovka xlsx)
v každém souboru mám v buňce list1, buňka A1 hodnotu v textovém formátu např. "8Y0"

2. Mám otevřený soubor SOUHRN.xlsx a v listu1 a sloupci A:A , bude textový seznam souborů (který pomoci makra vygeneruji z adresáře DATA (např.data01 .. 02... 03, tzn. je to proměnná v názvu-textu souboru)

3. Zmáčknu tlačítko generovat data z adresáře DATA a makro, bude postupně otvírat jednotlivé soubory dle seznamu v aktivním sešitu, listu1, sloupce A:A a kopírovat z každého otevřeného souboru z listu1 hodnotu v buňce A1 do aktivního sešitu do listu2 do sloupce A:A

4. Po zkopírování textu ze souboru otevřeného dle seznamu v souboru SOUHRN.xlsx a v listu1 a sloupci A:A.
Se aktuálně otevřený soubor (např. data01) uzavře a pak makro pokračuje dalším otevřením souboru dle seznamu v souboru SOUHRN.xlsx a v listu1 a sloupci A:A.

Je to taková slovní úloha.

Poradil bych si s tímto v rámci jednoho aktivního sešitu z listu1 do listu2, ale tady se jedná o mnohem hlubší znalost práce s proměnnými.

Prosím tedy o pomoc.

Děkuji.
OB

Zaslat odpověď >

Strana:  1 2   další »
#050529
Stalker
Celé sem to několikrát přečet a není mi zcela jasný, jak si představuješ funkci.
Má se vytvořit seznam souborů ve složce a z toho seznamu se budou vybírat konkrétní soubory? Proč?
Buď si přes dialog rovnou vybereš konkrétní soubory a provedeš import dat, nebo ve smyčce projdeš celý adresář DATA a import provedeš ze všech souborů.citovat
#050532
avatar
Ahoj asi to budu rozebírat postupně.

1.Mám dva soubory, každý v jiném adresáři

2.Jeden v adresáři někde na C:TEST\DATA\data01.xlsx a soubor se jmenuje např. data01 a další data02 (název souboru může být proměnný)

3.Druhý v adresáři někde na C:TEST\souhrn.xlsx

4.Otevřu soubor souhrn.xlsx v list1 a po zmáčknutí tlačítka si do sloupce A:A si vygeneruji seznam souborů z adresáře DATA

5.po zmáčknutí dalšího tlačítka VBA začne otvírat postupně soubory data01 až...... (dle vytvořeného seznamu na listu1) a z těchto souborů, bude postupně kopírovat hodnoty z buněk A1 do souboru souhrn.xlsx do listu2 do sloupce A:A

6. po zkopírovaní hodnoty se danný sobour data01 až...., vždy uzavře

7. výsledek je, že ze všech souborů z adresáře C:TEST\DATA\
budu mít zkopírované hodnoty na jedno místo v souboru souhrn.xlsx v listu2 sloupci A:A

Problém je, že je tam spousta poměnných:

- cesta do adresáře
- názvy souborů

.....

Snad je to teĎ jasnější 4
makro pro vytvoření seznamu mám a celkem funguje....citovat
#050533
Stalker
Udělal sem takový nástřel možného řešení.
Makro vytvoří současně seznam souborů i jejich hodnoty z buňky A1. Není potřeba spouštět 2 makra, vše se vyřeší v jednom cyklu.
K získání hodnot z jednotlivých listů sem použil metodu, kterou s oblibou používá Elninoslov©.
Nedochází k otevírání jednotlivých souborů, do buněk se vloží vzorec (odkaz) na buňku, který se následně převede na hodnotu. Makro je rychlejší.

PS: Samozřejmě by se dali udělat další úpravy, jména souborů a hodnoty by se načítaly do polí a následně až vložily do příslušných listů, což by mělo být zase o kousek rychlejší ...
Příloha: zip50533_ob.zip (36kB, staženo 27x)
citovat
#050534
avatar
To co jsi poslal funguje perfektně. Bohužel jsem nedomyslel, že moje datové soubory jsou staré excel 1997 až 2003 viz příloha, no a z těch to vytáhnout neumím. Popravdě potřebuji ze souborů vytáhnout a uložit více dat, které se vyskytují pořád na stejném místě.....v souboru Souhrn01 v listu2 jsou popsané sloupce co se kde vyskytuje v souborech z adresáře DATA. Vždycky tam jsou pevně dané texty, které představují záhlaví a pak data.

Všechny oblasti ze souborů z adresáře DATA vytáhnout a vložit do spojité oblasti v listu2 pro snadnou filtraci, kont. tabulky atdd.

Kdyby se to někomu povedlo bylo by to eňo ňuno. 1
Příloha: zip50534_souhrn01.zip (21kB, staženo 17x)
citovat
#050538
Stalker
No, to si to zadání, ale sakra změnil.
V příloze máš pokus o řešení. Kód je sice jako když pejsek a kočička vařili dort - původně sem se chtěl držet zvolenýho postupu a používat vzorce bez nutnosti soubory otevírat, což se povedlo jen částečně. Nakonec sem byl stejně dokopán k otevření souboru. Část dat se tedy tahá pomocí vzorců a další část je přes pole.
Kód dokáže načítat jak soubory xls tak xlsx nebo xlsm.
Jeden sešit sem pro ukázku uložil jako xlsx a upravil rozmístění dat, která nezačínala na řádku 31, jako v ostatních případech.

Možná se ukáže Elnino a dá tomu štábní kulturu 1
Příloha: zip50538_souhrn01.zip (44kB, staženo 23x)
citovat
#050541
avatar
Ahoj děkuji za takovou pomoc. Máš prosím nějaké zdroje, školení, ze kterých by se mohl začít učit takovéto věci programovat?citovat
#050542
avatar
Jinak to jak jsi to naprogramoval je super. Ušetří mi to hromadu času.
Děkuji. 1 1citovat
#050544
Stalker
zdroje:
Několik knih o VBA a internet, převážně zdejší fórum a youtube
WiseOwlTutorials
Excel Macro Mastery
Leila Gharani
atd...citovat
#050546
avatar
Najdu si čas a projdu si to. Zrovna testuji soubor "na živo" a mám zásek....
Mám tam tak min. 65 souborů, ze kterých chci tahat data a kód se zasekl něco 3.. (viz výstřižek v listu1)
Prosím znovu o pomoc.

Děkuji.
Příloha: zip50546_souhrn02.zip (133kB, staženo 14x)
citovat
#050548
Stalker
Proboha odkud se berou ty soubory *.xls?
Při otevření hlásí chybu viz obr.

Předělal sem kód, protože vzorce vracely chybu #odkaz
a upravil rozsahy buněk. Né u všech souborů xls začínají data na řádku 31 !

Je to sice pomalé, ale vypadá to, že i snad funkční.
Otestuj.
Příloha: png50548_chyba.png (16kB, staženo 24x)
50548_chyba.png
citovat

Strana:  1 2   další »

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje