< návrat zpět

MS Excel


Téma: Export modulů rss

Zaslal/a 10.10.2019 10:16

Ahoj všem.
Lze provést export (a následný import do jiného sešitu) více modulů najednou?
Díky za odpověď.

Zaslat odpověď >

#044510
avatar
Google je taková mrcha, on furt něco zatajuje...

https://stackoverflow.com/questions/40956465/vba-to-copy-module-from-one-excel-workbook-to-another-workbookcitovat
#044540
avatar
Díky za odpověď.
google není mrcha, ale všechno co najde, nemusí být funkční.
Kdyby jsem našel funkční kod, tak vás (všechny co tomu rozumí, nežádám o pomoc ve vyhledávání a poučování jak se v googlem vyhledává, ale o opravdu funkční makro, které řeší konkrétní problém.
Ale jinak díky za link, který sice odkazuje na možnou variantu, ale to mokra je nevím proč nefunkční. Tady na tomto se to zastaví:
For Each vbcompSource In wbSource.VBProject.VBComponentscitovat
#044542
elninoslov
A čítal ste tam toto:
Just make sure, following things are done before running this macro.

VB Editor > Tools > References > (Check) Microsoft Visual Basic for Applications Extensibility 5.3

File -> Options -> Trust Center -> Trust Center Setttings -> Macro Settings -> Trust Access to the VBA Project object model.
citovat
#044544
avatar
Ano, na to jsem přišel, ale i tak, když se mi ppodařilo spustit to makro, tak zkopíruje jenom ten modul, ve kterém je toto makro, do druhého sešitu. Ja jsem potřeboval něco, co zkopíruje všechny modoly v jednom sešite do druhého, abych to nemusel dělat ručně ...
Zřejmě to nejde.citovat
#044545
avatar
Už to vidím. problém je tady:
Set SourceModule = sourceVBProject.VBComponents("Module1").CodeModule

Ono to zkopíruje jenom ten modul, který je tady zapsaný. V tomto případě je to Modul1.citovat
#044546
elninoslov
Nie. Použite to hromadné makro z odkazu.
Pridal som tam iba
If vbcompSource.CodeModule.CountOfLines = 0 Then
pred priradenie textu kódu v module, ak by náhodou bol modul bez kódu.
Příloha: zip44546_kopiruj-moduly-do-noveho-zositu.zip (18kB, staženo 23x)
citovat
#044547
avatar
elninoslov:
Díky. Funguje to :-) Jenom technicky dotaz: nešlo by to nějak upravit tak, aby to makro nevytvářelo nový sešit a tam zkopírovalo moduly, ale aby ty moduly zkopíroval do druhého otevřeného sešitu?
Např.: z pokus.xlsm moduly zkopíroval do otevřeného sešit s názvem xxx.xlsm?citovat
#044549
elninoslov
Ale išlo, len treba povedať, ako ten druhý zošit identifikujete. Má niečo v názve, čím sa odlíši od iných, prípadne zároveň otvorených súborov ?citovat
#044553
avatar
elninoslov:
dá se, ale jenom částečně, protože cílový soubor se bude měnit. Zdrojový soubor bude pořád: Likvidační_MSOFFICE2019.xltm
Cílový se bude měnit. Ale nešlo by to udělat tak, že by si dejme tomu, jeho název načetl z proměnné vložené ručně do textboxu? :-)citovat
#044583
avatar
Tak hotovo. Vytvořil jsem formulář s listboxem, do kterého načtu obsah adresáře (zatím přednastavený na "C:\11111\kopiruj\" Dle potřeby lze změnit), vyberu cílovy soubor a do toho se mi následně zkopírují moduly. Má to ovšem jednu chybu: Pokud již v cílovém souboru existuje stejný název modulu nebo formuláře, tak se to zastaví. Asi by nebyl problém to oeštřit ...
Pokud se to bude někomu hodit, tak je to v přiloze.
Jinak díky všem, kteří byli nápomocní :-)
Příloha: zip44583_kopiruj-moduly-do-exist-souboru.zip (26kB, staženo 21x)
citovat

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