Stránka 1 z 1

Otevření více souborů  Vyřešeno

Napsal: 09 pro 2010 13:07
od tomasholecek
Dobrý den, mám takový problém, kdy musím po jednom otevřít v jednom adresáři několik set různých xlsm souborů, každý z nich přepočítat a uložit do pdf (popřípadě vytisknout přes virtuální pdf tiskárnu) a zase zavřít. Název pdf musí být stejný jako název xlsm souboru. Dokážete mi poradit jak tuto činnost zautomatizovat? Děkuji za pomoc.

Re: Otevření více souborů

Napsal: 09 pro 2010 13:49
od navstevnik
Do pdf souboru exportovat vsechny listy nebo vybrany list?
Pokud vsechny, tak kazdy list do samostaneho souboru nebo vsechny listy do jednoho souboru?
Bude pouzit PDFCreator
Prepocet sesitu, listu, bloku bunek?

Re: Otevření více souborů

Napsal: 09 pro 2010 14:30
od tomasholecek
Z každého xlsm souboru bude exportován pouze jeden list. Z každého xlsm souboru bych potřebovat vytvořit pdf, tzn. 200 xlsm zdrojových souborů vytvoří 200 pdf souborů (s jedním listem). Přepočet listu stačí (tuším, že je to calculate ve VBA). Je mi celkem jedno, zda se použije přímo funkce excelu 2007 export do pdf nebo PDFCreator (já používám pdfFactory pro). pdfFactory vytváří pdf o podstatně menší velikosti, ale zase potřebuje zadání cesty a potvrzení uživatelem, tak nevím, zda by to nebyla komplikace při vytváření procedury ve VBA. Klidně by stačilo tedy použít přímo export do pdf z excelu2007.

Re: Otevření více souborů

Napsal: 09 pro 2010 18:41
od navstevnik
V priloze je sesit, po jehoz otevreni uprav zdrojovy katalog, rozsireni souboru, nazev listu a cilovy katalog.
Testuj na zkusebni sade sesitu .xlsm

Re: Otevření více souborů

Napsal: 10 pro 2010 08:10
od tomasholecek
Dík moc, jenom při exportu mi to zahlásí chybu: Compile error: Method or data member not found a zastaví se to na tomto řádku:

Kód: Vybrat vše

.PBar.Max = CntFFile

Taky mi to hned při otvírání souboru xlsmtopdf zahlásí: Could not load an object because it is not available on this machine.

Nicméně tato chyba nemá na prvotní funkci souboru asi vliv. Pokud procedury vyřadím, tak vše proběhne (pravděpodobně se pouze nezobrazuje progress bar). Co ale bych rád ještě dořešil je, že zdrojové soubory při otevření vykonávají tuto proceduru:

Kód: Vybrat vše

Private Sub Workbook_Open()
    ActiveWorkbook.UpdateLink Name:= _
       "'Y:\AZ Dokumenty\Osobní složky\Tomáš\Dokumenty Microsoft Excel\Kalkulace\Zdroje cen.xlsm", Type:=xlExcelLinks
End Sub

A při tomto mi to zahlásí chybu. Napadá Vás něco, jak toto vyřešit?
Dále zdrojové xlsm soubory ještě obsahují propojení na jiný sešit, bohužel při otevírání přes VBA mi to zahlásí, že sešit obsahuje několik propojení, které nemůže aktualizovat. Dá se nějak ve VBA natvrdo nastavit cestu k tomuto propojenému souboru? (tento soubor má vždy stejnou cestu)

Re: Otevření více souborů

Napsal: 10 pro 2010 10:09
od navstevnik
Nejspise chybi potrebna knihovna MS Forms 2.0 Object Library - http://p2p.wrox.com/excel-vba/5118-how- ... brary.html ,jinak desktivuj radky tykajici se UserForm - ProgressBar.

Je v poradku retezec (apostrof): "'Y:\AZ Dokumenty\Osobní složky\Tomáš\Dokumenty Microsoft Excel\Kalkulace\Zdroje cen.xlsm" ?

Nejspis pouzij prikaz Sendkeys pro ukonceni pozadavku na propojeni v miste vyskytu pozdavku na aktualizaci, pokud neni propojeni potrebne pro export do PDF.

Re: Otevření více souborů

Napsal: 10 pro 2010 14:03
od tomasholecek
řetězec je v pořádku, apostrof se mi sem připletl omylem, v souboru není. Když otevřu soubor normálně (v průzkumníku), tak mi vše chodí korektně. Bohužel propojení je potřebné, aby se mi vše správně přepočetlo před exportem do pdf.

Re: Otevření více souborů

Napsal: 10 pro 2010 14:41
od navstevnik
Pro otestovani nemam vhodne soubory s propojenim, takze zkus nahradit otevirani souboru jako doplnek normalnim otevrenim. V procedure nahrad radek:

Kód: Vybrat vše

        ' otevrit zdrojovy soubor
        Set SWbk = GetObject(objFile)

timto, byt pomalejsim:

Kód: Vybrat vše

Set SWbk = Workbooks.Open(objFile)

Re: Otevření více souborů

Napsal: 10 pro 2010 15:45
od tomasholecek
Dík moc, už to funguje.