Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Excel VBA - uložit soubor jako xlsx

Ahoj,
potřebuju radu. Už se tu s tím peru nějakou dobu :.(
Ve vba používám k ukládání souboru metodu SaveCopyAs přesněji ActiveWorkbook.SaveCopyAs Filename:=newFile & ".xlsm".
Potřeboval bych však soubor uložit bez maker tudíž jako *.xlsx. Pokud to natvrdo vložím do kodu soubor se sice uloží, ale nejde otevřít. Excel vřeští, že přípona souboru není platná.
Nevěděl by někdo jak dosáhnout kýženého výsledku?
Díky

Předmět Autor Datum
win001.htm
pme 08.03.2015 08:14
pme
Dík za reakci. O metodě SaveAs s parametrem Feleformat vím. Bohužel tuto metodu nemůžu použít. Sešit…
Siki83 08.03.2015 09:07
Siki83
Takové věci (pokud se mi nechce hledat v dokumentaci) řeším tím, že si zapnu záznam makra, udělám, c…
Jan Fiala 08.03.2015 09:08
Jan Fiala
Vo VBA vytvoríš nový zošit a z pôvodného z neho prekopíruješ len to, čo chceš aby v ňom zostalo - vý…
los 08.03.2015 09:55
los
Chlapi díky za reakce. Vo VBA vytvoríš nový zošit a z pôvodného z neho prekopíruješ len to, čo chce…
Siki83 09.03.2015 19:33
Siki83
přečetl jsem si to tak 3x a nejsem si 100% jistý z čeho se vychází a co má být výsledek, případně ja…
TNT 10.03.2015 14:19
TNT
Application.DisplayAlerts = False 'Potlačení dialogových oken, vhodné v závěru zase povolit poslední
radula 26.05.2020 16:31
radula

Dík za reakci. O metodě SaveAs s parametrem Feleformat vím. Bohužel tuto metodu nemůžu použít. Sešit obsahuje maker více a pokud by uživatel takto sešit uložil už v něm nelze dále pracovat. Proto sem se ptal na metodu SaveCopyAs.

Ještě včera (vlastně dneska) než sem šel spát sem našel řešení - metodou SaveCopyAs uložím kopii souboru s podporou maker tento, soubor otevřu znovu uložím metodou SaveAs bez maker a soubor s makry nechám smazal příkazem kill.

Celé se mi to však zdá nějak kostrbaté :-/ ale zatím jediné funkční řešení. Pokud někoho napadne lepší řešení sem s ním.

Vo VBA vytvoríš nový zošit a z pôvodného z neho prekopíruješ len to, čo chceš aby v ňom zostalo - výsledok potom uložíš. Viem, že to nie je úplne to, čo si si predstavoval, ale toto je štandardný postup a jednoduchšie to naozaj nejde.

Chlapi díky za reakce.

Vo VBA vytvoríš nový zošit a z pôvodného z neho prekopíruješ len to, čo chceš aby v ňom zostalo

Problémem je, že já chci celý sešit s několika listy pouze bez maker. Pokud bych potřeboval jen část je to nejlepší způsob. Rozhod sem se, že zůstávám u postupu, který sem použil (uložit kopii jako xlsm, otevřít -> uložit jako xlxs a soubor xlsm smazat). Sice mi tento postup připadal jako drbat se levou rukou za pravým uchem, ale pokud není lepší možnosti budiž.

přečetl jsem si to tak 3x a nejsem si 100% jistý z čeho se vychází a co má být výsledek, případně jaké mezikroky v práci se souborem jsou nežádoucí. původní soubor s makry má být zachován a z něj se má vygenerovat co nejjednodušeji soubor bez maker.

otevřu .xlsm, ve kterém je makro, které provede uložení do nového souboru .xlsx (bez maker)

Sub Uloz()
    Application.ScreenUpdating = False
    folder = "L:\"
    file = "Test_bez_maker" & ".xlsx"
    
    
    
    ActiveWorkbook.SaveAs Filename:=folder & file, FileFormat:=xlOpenXMLWorkbook, _
        Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
        CreateBackup:=False

    Application.ScreenUpdating = True
    MsgBox ("Hotovo.")
End Sub

Nevýhodou je ruční potvrzení uživatelem, že to opravdu chce bez maker. Nepátral jsem, jestli to dialogové okno lze potlačit, aby se to provedlo automaticky.

Zpět do poradny Odpovědět na původní otázku Nahoru