Přeskočit navigaci | Přeskočit na novinky

Jste zde: Úvodní stránka » excel » vba-soubory » SaveAs-metoda-ulozit-jako

Uložit jako - SaveAs Metoda - Excel VBA

Videokurzy Excel

Ve spolupráci se SEDUO jsem vytvořil několik videokurzů:

Jak pomocí VBA makra v Excelu ukládat do xlsx, xlsm. Komplikace, možné problémy, jak je ošetřit. Předávat parametry, volit hesla.

Úvodem

MS Excel 2010 - ikona

Seznam kapitol v tomto článku:

Co umí metoda SaveAs

Potřebujete-li pomocí VBA uložit soubor. Odpovídá klasickému Uložit jako

Upozornění: Provedením této metody se soubor uloží pod zadaným názvem a vy začnete pracovat v tomto novém souboru!

Díky za info Petr F.

Syntaxe metody SaveAs

Syntax 1 pro sheet (List)

Worksheet.SaveAs(Filename, FileFormat, Password, WriteResPassword, ReadOnlyRecommended, CreateBackup, AddToMru, TextCodePage, TextVisualLayout, Local)

Syntax 2 pro workbook (Sešit)

Workbook.SaveAs(Filename, FileFormat, Password, WriteResPassword, ReadOnlyRecommended, CreateBackup, AccessMode, ConflictResolution, AddToMru, TextCodePage, TextVisualLayout, Local)

Popis parametru

  • Filename - Povinné - String (Worksheet), Volitlné - Variant (Workbook) - není-li zadána kompletní cesta uloží se do aktuální složky (adresáře)
  • FileFormat - Volitlné - Variant - typ ukládaného souboru, viz níže, kde jsou typy vypasány - tj. XlFileFormat
  • Password - Volitlné - Variant - Heslo (max. 15 znaků)
  • WriteResPassword - Volitlné - Variant - Heslo pro zápis.
  • ReadOnlyRecommended - Volitlné - Variant - pro ReadOnly soubor
  • CreateBackup - Volitlné - Variant - Pokud se má vytvářet záloha = TRUE
  • AccessMode - Volitlné - Variant -
  • ConflictResolution - Volitlné - Variant -
  • AddToMru - Volitlné - Variant -
  • TextCodePage - Volitlné - Variant - není použito v U.S. English Excel
  • TextVisualLayout - Volitlné - Variant - není použito v U.S. English Excel
  • Local - Volitlné - Variant - TRUE - Excel respektuje národní nastavení v ControlPanelu (centrum nastavení) - více ukážu v příkladech, kde je to názornější.

Typy souboru - FileFormat

Typy souboru (tj. tabulka XlFileFormat) spolu s jejich kódem:

  • 51 - xlOpenXMLWorkbook - bez makra xlsx
  • 52 - xlOpenXMLWorkbookMacroEnabled - s makrem xlsm
  • 50 - xlExcel12 -binární xlsb
  • 56 - xlExcel8 - xls (verze 97 - 2003)

Další důležité csv, txt, pdf ...

  • -4158 - txt
  • 6 - csv
  • 36 - prn
  • -

A další kompletní seznam je na samostatný článek

Jednoduchý příklad

Začneme úplně jednoduchým příkladem

ActiveWorkbook.SaveAs "C:\MujSoubor.xlsm"

Obdržíte dialogové okno, že soubor již je uložen pod stejným názvem (pokud jste jej již jednou ukládali). Nebo informaci, že nelze uložit, protože sešit obsahuje makra (zatím jste neukládali) a je přednastaven název, který novému sešitu dal Excel (Sešit 1.xlsx).

ActiveWorkbook.SaveAs "C:\MujSoubor.xlsm"

Soubor uložíme pod názvem MujSoubor.xlsm.

Komplexnější příklady

Uložit s heslem

ActiveWorkbook.SaveAs Filename:="D:\test\test.xlsm", Password:= "AAA"

Uložený vybraných listů

Sheets("List1").Select ActiveSheet.Copy ActiveWorkbook.SaveCopyAs Filename:="D:\revize\Pouze-list.xlsx" ActiveWorkbook.Close (False)

Uložit s datem

Do názvu se vloží aktuální datum a čas

ActiveWorkbook.SaveAs Filename:="D:\test\Report" & Format(Now, "yyyymmdd") & ".xlsm"

Uložit s datem + jméno buňce

Uložit s datem a jméno si zvolit zadáním hodnoty do buňky A1 a do buňky A2.

FJmeno = Sheets("List1").Range("A1").Text FDoklad = Sheets("List1").Range("A2").Text JmenosDatumem = FJmeno & FDoklad & Format(Now, "yyyymmdd")

Lepší úprava ukládaného souboru.

JmenosDatumem = FJmeno & "-" & FDoklad & "_" &Format(Now, "yyyymmdd") & ".xlsm", FileFormat:=52

Doplňující kódy

Doplnit a rozšířit kód VBA.

Zjištění vhodného formátu

Zjištění zda sešit obsahuje makra.

If .HasVBProject Then VYsledek = ".xlsm" Else Vysledek = ".xlsx" End If

Dialogové okna

Vypnutí zobrazování systémových hlášek.

With Application .ScreenUpdating = False .EnableEvents = False End With

Opětovné zapnutí zobrazování systémových hlášek, jinak neodhalíte případné chyby (nezobrazí se) v jiných častech programu.

With Application .ScreenUpdating = True .EnableEvents = True End With

Ukládání pod jinými názvy - csv, txt, pdf

Jak uložit pod do csv, txt, pdf bude předmětem jiných článků. Jak uložit do excelovský sešit do *.pdf jsem sepsal v článku Tisk do *.pdf - Excel VBA makro.

Problémy s ukládáním

Problémy s ukládáním. Ukládáte pod názvem souboru, který je již otevřen a nelze do něj zapisovat, složka je nepřístupné, list obsahuje makra, která se nedají uložit do *.xlsx, potřebujete uložit do starší verze a máte formátování, která starší verze nepodporuje atd.

Podobné příkazy se SaveAs

Další možnost jek ukládat je vytvořit kopií pomocí SaveCopyAs - pokud bude v komentářích zájem, pokusím se rozšířit i o tuto kapitolu.

Uložit kopii jako

ActiveWorkbook.SaveCopyAs "C:\MujSoubor.xlsm"

Uzavření sešitu

ActiveWorkbook.Close (FALSE)

nebo

ActiveWorkbook.Close SaveChanges:=True

nebo

Activeworkbook.Saved=True

Uložit tento sešit

ThisWorkbook.Save

Uložit kopií sešitu

Uložit kopií sešitu pos zvoleným nazvem i s datem.

FCesta = "C:\dokument" FJmeno = Sheets("List1").Range("A1").Text FCislo = Sheets("List1").Range("A2").Text JmenosDatumem = FJmeno & FCislo & Format(Now, "dd.mm.yyyy") ThisWorkbook.SaveCopyAs Filename:=FCesta & "\" & JmenosDatumem & ".xlsx" End Sub

Poznámka: Jedná se o jinou metodu takže nesmí obsahovat "FileFormat:=51".

Uložit jako samostatný list (listy)

Jak uložit jen jeden list, například Akvivní.

ActiveSheet.Copy ActiveWorkbook.SaveAs Filename:="C:\MyFolder\MySubFolder\Test.xls" ActiveWorkbook.Close

Tip nedotazovat se na ukládání:

Application.displayAlerts = False

Samostatné listy

Pokud potřebuji vyextrahovat samostatné listy (třeba jména lidi a jejich výsledky, které jsou na samostatných listech).

Dim sh As Worksheet For Each sh In Worksheets sh.Copy ' at se neptá na potvrzení uložení Application.DisplayAlerts = False ' jména jednotlivých sešitu podle názvu listů ' Tip: Lze mít podmínku, pokud se jméno listu začíná: xy* ActiveWorkbook.SaveAs Filename:="D:\smaz\" & sh.Name & ".xlsx" Application.DisplayAlerts = True 'budu-li chtit ulozit i tento sešit ActiveWorkbook.Close Savechanges:=False Next
VBA Excel 2010 - SaveAs příklady

Ke stažení

Soubor jak v VBA ukládat pomocí SaveAs (SaveCopyAs) soubor ve formátu *.xlsm ke stažení zdarma. Soubor využívá makra.

V případě potřeby postupně doplním o další VBA kódy.


Závěrem

Pro případné doplnění článku jsou komentáře.

Článek byl aktualizován: 19.09.2020 11:07

Odměna

Ušetřil vám tento web čas, peníze? Pomohl vyřešit problém? Jste ochotni poskytnout symbolickou odměnu na další rozvoj? Vybrte si formu odměny, která vám vyhovuje.


Pavel Lasák - autor webu

Pavel Lasák

Microsoft Office (Word, Excel, Google tabulky, PowerPoint) se věnuji od roku 2000 (od 2004 na této doméně) - V roce 2017 jsem od Microsoft získal prestižní ocenění MVP (zatím jsem jediný z ČR v kategorií Excel). Své vědomosti a zkušenosti dávám k dispozici i on-line ve videích pro SEDUO. Ve firmách školím a konzultuji, učím na MUNI. Tento web již tvořím přes 15 let. Zdarma je zde přes 1.000 návodu, tipů a triků, včetně přes 250 různých šablon, sešitů.

   Pavel Lasák LinkedIn Profil    Pavel Lasák Google+ Profil    Pavel Lasák facebook Profil    Pavel Lasák twitter Profil


Komentáře


RomanP

Přidáno: 25.09.12 16:27

Dobrý den, jsem exelista samouk, ale vyrobil jsem si formulář pro objednávky, kde název formuláře se skládá vždy z údajů ve formuláři.(rok, mesíc, den a název objednávky). Tento název je v jedné dané buňce. Lze udělat makro, kdy se mi vyplněný formulář po zmáčknutí tlačítka tisk (výstup) uloží do nového sešitu s tímto názvem? Děkuji za radu.

Pavel Lasák

Přidáno: 25.09.12 18:24

To RomanP: Využít Workbook.SaveAs, kde Filename bude jméno z dané buňky (např. A1). Sub SaveAsJmeno() Dim FJmeno As String Dim FCesta As String FCesta = "C:\pokusy" FJmeno = Sheets("Sheet1").Range("A1").Text ThisWorkbook.SaveAs Filename:=FCesta & "\" & FJmeno End Sub

Honza V

Přidáno: 27.01.13 07:18

Dobrý den, potřeboval bych radu, jak mohu uložit kopii listu pomocí příkazu, který je uvedený pod uložit s datem, aby v názvu nebylo slovo Report, ale odkaz na určitou buňku v listu 1. Například z Listu1 & A1 & B3 & datum

Pavel Lasák

Přidáno: 27.01.13 07:43

To HonzaV: Je udedeno v článku výše, opakování je matkou moudrosti ;-) využít funkce NYNÍ() ve VBA nutno zadat v angličtině NOW FCesta = "D:\pokusy" FJmeno = Sheets("List1").Range("A1").Text JmenosDatumem = FJmeno & Format(Now, "yyyymmdd") ThisWorkbook.SaveAs Filename:=FCesta & "\" & JmenosDatumem & ".xlsm", FileFormat:=52 FileFormat:=52 ... aby se ukládal soubor jako xlsm (tj. soubor s makry). Jen na doplnění. Nebo za použití DNES() JmenosDatumem = FJmeno & Format$(Date, "mm-dd-yyyy") PS: Nekontroluje, zda složka existuje, zda již existuje soubor s tímto názvem, zda není otevřen atd...

Honza V

Přidáno: 27.01.13 10:52

Děkuji moc za pomoc. Tuto část jsem pochopil, ale nevím si rady s tím, jak přidat do pojmenování tu druhou hodnotu z té druhé buňky. Pro vysvětlení: potřebuji uložit vyplněnou fakturu, kde bych chtěl mít uložené údaje datum, číslo dokladu a jméno. Datum se napíše pomocí vašeho makra, číslo faktury bude např. A1, ale nevím, jak mám přidat tu druhou hodnotu z např buňky A2.

Pavel Lasák

Přidáno: 27.01.13 11:59

To Honza V: Přidávání je přes & viz ukázka FJmeno = Sheets("List1").Range("A1").Text FDoklad = Sheets("List1").Range("A2").Text JmenosDatumem = FJmeno & FDoklad & Format(Now, "yyyymmdd") případně přidávat do názvu další znaky například pomolčky JmenosDatumem = FJmeno & "-" & FDoklad & "_" &Format(Now, "yyyymmdd") & ".xlsm", FileFormat:=52

Honza V

Přidáno: 27.01.13 17:27

Děkuji, vše jsem pochopil a celé to funguje, jak jsem potřeboval. Mám ještě jeden problém. List s fakturou, kterou ukládám do složky faktur mi přepíše název celého sešitu a když potřebuji uložit celý sešit, tak se mi automaticky uloží do poslední faktury (cestu a původní název mohu dopsat ručně). Potřebuji, aby se mi celý sešit uložil do původní složky, protože v ostatních listech mám další údaje, které postupně doplňuji a potřebuji, aby se uložily. Jedná se např. o list odběratelé atd.

Pavel Lasák

Přidáno: 27.01.13 18:41

To Honza V: Uložit jako kopií (viz info výše) je jiná metoda SaveCopyAs Syntaxe je: SaveCopyAs(Filename) takže se ukládá naříklad: ThisWorkbook.SaveCopyAs Filename:=FCesta & "\" & JmenosDatumem & ".xlsm" nesmí být FileFormat:=52

Honza V

Přidáno: 27.01.13 19:18

Sub ulozit() FCesta = "C:\Documents and Settings\Plocha\s" FJmeno = Sheets("List1").Range("A1").Text FCislo = Sheets("List1").Range("A2").Text JmenosDatumem = FJmeno & FCislo & Format(Now, "dd.mm.yyyy") ThisWorkbook.SaveCopyAs Filename:=FCesta & "\" & JmenosDatumem & ".xlsx", FileFormat:=51 End Sub Toto je celé makro, ale při spuštění se žlutě označí prví řádek se Sub ulozit () a označí se mi FileFormat. Vyskočí hlášení : Compile error: Named argument not found

Pavel Lasák

Přidáno: 27.01.13 21:23

To Honza: Nesmí tam být "FileFormat:=51" viz předchozí komentář. Kde je syntaxe + příklad a poznámka že nesmí být ;-) Sub ulozit() FCesta = "C:\Documents and Settings\Plocha\s" FJmeno = Sheets("List1").Range("A1").Text FCislo = Sheets("List1").Range("A2").Text JmenosDatumem = FJmeno & FCislo & Format(Now, "dd.mm.yyyy") ThisWorkbook.SaveCopyAs Filename:=FCesta & "\" & JmenosDatumem & ".xlsx" End Sub

Honza V

Přidáno: 27.01.13 21:41

Děkuji, vše pracuje na 100%. Nepochopil jsem poznámku o FileFormat. Myslel jsem si, že tam nesmím napsat 52, ale mohu použít jiné označení. Už vím, že tam není žádný formát. Jsem opravdu jenom uživatel. Ještě jednou děkuji za pomoc.

Petr G

Přidáno: 22.02.13 05:53

Zdravím pane Lasáku. Šlo by prosím přiložit soubor jako ukázku? Furt se s tím nějak peru a nejde mi to. Řeším první problém (viz RomanP) a to s ukládáním názvu souboru dle obsahu určitě buňky. Děkuji mockrát.

Pavel Lasák

Přidáno: 23.02.13 09:22

To Petr G: Tak soubor je přiložen. Ukázku jsem doplnil do článku. Jde jen o ukládání (pomocí SaveAs a SaveCopyAs) s heslem, bez hesla, pevný název, název z buňky, doplnění názvu o čas.

Příklady již neřeší kontrolu, zda složka existuje, zda je možno do složky zapisovat, zda není soubor do kterého se zapisuje otevřen atd...

Petr .F.

Přidáno: 25.02.13 13:41

K tématu chci jen uvést, že pokud provedete metodu "SaveAS" pak už automaticky pracujete na novém souboru! Je rozdíl proti "SaveCopyAs", kde lze definovat "FileFormat"(např. html, pdf...). Nejlépe to je vidět na krokování v debugu. Pokud pak píšete dál ve VBA, už jste v jiném souboru! Toto z článku není zcela jasné. Jinak pro mne je to velice cenný WEB. Díky, Pavle.

Pavel Lasák

Přidáno: 25.02.13 20:30

To Petr F.: Děkuji za doplnění. Doplnil jsem také do článku , ať je pro další čtenáře jasnější jak funguje metoda SaveAs. Jsem rád že web pomáhá.

Pavel Hurt

Přidáno: 21.03.13 16:00

Dobrý den pana Lasáku, jak prosím napsat skript, aby uživatel složku uložení kopie vybíral, nikoliv ji měl předem danou. Chtěl bych využít SaveCopyAs, kde bude definován formát pdf. A název souboru se bude skládat ze jména (u tabulky) a datem (rovněž z tabulky). Děkuji velice za přínosné stránky, jako samouk velice oceňuji.

Pavel

Přidáno: 21.03.13 16:15

A ještě dovětek, jak zadám ukládání - saveAs pouze konkrétního listu nikoliv celého sešitu? Díky, díky

Pavel Hurt

Přidáno: 22.03.13 10:01

Dobrý den, uložené PDF, ve Vašem vzorovém sešitu je vždy nečitelné. Nevíte, kde může být chyba, rád bych tuto možnost ve svém sešitu využil (viz. výše).

Pavel Lasák

Přidáno: 22.03.13 20:23

To Pavel Hurt: Ukázkový soubor jsem upravil. Po testech funguje tvorba *.pdf bezproblemově.
Podrobněji o exportu do *.pdf jsem sepsal článek export do *.pdf

Jakub

Přidáno: 29.03.13 18:21

Dobrý den, chci se zeptat jestli při uložení excelu do formátu xlsm pomocí kódu ve VBA (viz výše), je možno zajistit, aby se kopírovaly i kódy napsané v sekci ThisWorkbook.(kopírují se mi jen kódy z listů).děkuji

Jitka

Přidáno: 17.10.13 11:38

Děkuji za různé rady, potřebovala bych uložit do textového souboru data z tabulky QueryTable načtené na list v Excelu, nebo všeobecně oblast z listu kde jsou nějaká data. Děkuji za tipy

David

Přidáno: 11.11.13 11:37

Dobrý den, Kopírování dle vašeho návodu funguje bezproblémově. Uložení listu jako nový s vlastním názvem přímo do složky. Problém mám v tom, že se ukládá včetně vzorců, ale já bych to chtěl jako hodnoty a navíc i tak jak je nastaven filrt...

Rostislav

Přidáno: 10.02.14 14:50

Dobrý den, potřeboval bych uložit jako pdf w excelu 2010, to mi funguje, ale mám na stránce 3 dokumenty v jednom listu a potřeboval bych uložit pouze vždy jeden dokument a to zrovna ten, který chci. Něco jako oblast tisku při tisku. Jde to navolit při uložit jako ???? Děkuji

Tomáš

Přidáno: 15.04.14 07:11

Dobrý den, potřeboval bych poradit s makrem. Mám soubor "kontrola.xls", kde v buňce "E2" mám číselný kód např.: "001". Potřebuji složit makro, které mi daný sešit uloží do jasně specifikované složky (např.: C:\KONTROLA\) jako kopii, která bude mít název "E2"&DDMMYY. Toto vše se mi podaří, ale po uložení jsem v podstatě v tom uloženém excelu. Potřeboval bych, aby se mi uložilo na pozadí, ale stále zůstal otevřený ten původní excel "kontrola.xls" . Také bych potřeboval, aby se při každém uložení daná hodnota v buňce "E2" zvýšila o jedničku. Button pro uložení by měl být opodmínkovaný, že lze spustit pouze v případě, kdy v buňce "G8" je hodnota "v pořádku". Jsem excelista samouk, moc mě to baví, ale s tímto si nějak nevím rady. P.S. mám excel 2003 Předem děkuji za Váš čas. TV

Petr

Přidáno: 08.01.15 11:11

Dobrý den, poprosím o radu jak udělat z exel soubor CSV? nedaří se udělat ve správném formátu pro export na eshop. Dekuji za radu a pomoc . Děkuji, Petr Brno

Jojo

Přidáno: 09.01.15 08:32

To Petr: -- pomocou "Uložit jako" nepostačuje? + v okne "Typ Souboru" vybrať: "CSV(MS-DOS)(*csv)"

Stoupa

Přidáno: 06.03.15 07:17

Ahoj, nepatří to tak úplně do metody "SaveAs", ale jde o ukládání souboru "Uložit jako" A protože by se toto mohlo někomu hodit, tak proč se nepodělit :) V sešitu (který je "jakoby" síťová šablona bez dat) dělám úpravy/aktualizace tabulek, ostatní uživatelé doplňují data. Takže xlt, nebo zaškrtnutá vlastnost souboru "Pouze pro čtení" je tak zase na obtíž pro mně (aktualizace jsou celkem časté), ale použil jsem "Private Sub Workbook_Open()", kde se může nadefinovat uživatel(é), který má soubor pro zápis a ostatní tak mají stejný soubor jen pro čtení Jenže tím by se stále ukládala každá případná kopie ostatním uživatelům stále pouze pro čtení, takže mě napadlo: rozhodnutí kdy/komu se soubor otevře pro čtení a kdy/komu pro zápis vytvořit v Modulu1: [code]Sub Auto_Open() Dim strUser As String strUser = Environ("USERNAME") Select Case strUser 'Full Access Case Is = "login uživatele s plným přístupem" If ActiveWorkbook.ReadOnly Then _ ActiveWorkbook.ChangeFileAccess Mode:=xlReadWrite, WritePassword:="admin" 'Limit Access Case Is <> "login uživatele s plným přístupem" If Not ActiveWorkbook.ReadOnly Then _ ActiveWorkbook.ChangeFileAccess Mode:=xlReadOnly, WritePassword:="admin" End Select End Sub[/code] a k tomu vytvořit Modul2, který v případě otevřeného souboru "pouze pro čtení" (tedy komukoliv kromě mě) nabídne "uložit jako" a zároveň v této uložené kopii zruší omezení z Modulu1 a zamete po sobě (ve vytvořené kopii smaže oba moduly) [code]Sub Auto_Close() Dim strUser As String strUser = Environ("USERNAME") Select Case strUser Case Is <> "login uživatele s plným přístupem" If strUser = Environ("USERNAME") Then Dim vbCom As Object Set vbCom = Application.VBE.ActiveVBProject.VBComponents vbCom.Remove VBComponent:=vbCom.Item("Module1") vbCom.Remove VBComponent:=vbCom.Item("Module2") End If End Select End Sub[/code] No u Modulu2 jsem se trochu zapotil. Podmínka měla být, pokud to jsem já, nedělej nic, jinak smaž moduly. Nakonec se zadařilo, ale je to trochu nelogické (na můj mozek). v akždém případě nejsem profík, určitě to jde i líp. Tak to berte s rezervou ...

Stoupa

Přidáno: 06.03.15 09:48

[code] tak teď netuším, proč nezafungoval v předchozím příspěvku "code" - omlouvám se ... [/code]

Stoupa

Přidáno: 06.03.15 09:51

už vidím chybu - místo "[" jsem dal "<" ... pardon ... Ahoj, nepatří to tak úplně do metody "SaveAs", ale jde o ukládání souboru "Uložit jako" A protože by se toto mohlo někomu hodit, tak proč se nepodělit :) V sešitu (který je "jakoby" síťová šablona bez dat) dělám úpravy/aktualizace tabulek, ostatní uživatelé doplňují data. Takže xlt, nebo zaškrtnutá vlastnost souboru "Pouze pro čtení" je tak zase na obtíž pro mně (aktualizace jsou celkem časté), ale použil jsem "Private Sub Workbook_Open()", kde se může nadefinovat uživatel(é), který má soubor pro zápis a ostatní tak mají stejný soubor jen pro čtení Jenže tím by se stále ukládala každá případná kopie ostatním uživatelům stále pouze pro čtení, takže mě napadlo: rozhodnutí kdy/komu se soubor otevře pro čtení a kdy/komu pro zápis vytvořit v Modulu1: Sub Auto_Open() Dim strUser As String strUser = Environ("USERNAME") Select Case strUser 'Full Access Case Is = "login uživatele s plným přístupem" If ActiveWorkbook.ReadOnly Then _ ActiveWorkbook.ChangeFileAccess Mode:=xlReadWrite, WritePassword:="admin" 'Limit Access Case Is <> "login uživatele s plným přístupem" If Not ActiveWorkbook.ReadOnly Then _ ActiveWorkbook.ChangeFileAccess Mode:=xlReadOnly, WritePassword:="admin" End Select End Sub a k tomu vytvořit Modul2, který v případě otevřeného souboru "pouze pro čtení" (tedy komukoliv kromě mě) nabídne "uložit jako" a zároveň v této uložené kopii zruší omezení z Modulu1 a zamete po sobě (ve vytvořené kopii smaže oba moduly) Sub Auto_Close() Dim strUser As String strUser = Environ("USERNAME") Select Case strUser Case Is <> "login uživatele s plným přístupem" If strUser = Environ("USERNAME") Then Dim vbCom As Object Set vbCom = Application.VBE.ActiveVBProject.VBComponents vbCom.Remove VBComponent:=vbCom.Item("Module1") vbCom.Remove VBComponent:=vbCom.Item("Module2") End If End Select End Sub No u Modulu2 jsem se trochu zapotil. Podmínka měla být, pokud to jsem já, nedělej nic, jinak smaž moduly. Nakonec se zadařilo, ale je to trochu nelogické (na můj mozek). v akždém případě nejsem profík, určitě to jde i líp. Tak to berte s rezervou ...

Martin

Přidáno: 07.10.15 10:59

Dobrý den, pane Lasáku, mám problém, který výše popisujete jen slovně:"list obsahuje makra, která se nedají uložit do *.xlsx" ... jak lze toto vyřešit? Mám list na který aplikuji přes kód autofiltr a potřebuji druhým tlačítkem tyto vyfiltrované řádky (pouze je) uložit jako obyčejný xls., xlsx, bohužel se mi daří uložit jako pouze celý sešit, jakoby kopii původního. Snad jsem to popsal dostatečně. Sub tlačítko4_Kliknutí() FCesta = "C:\xxx" FJmeno = "xxx" JmenosDatumem = FJmeno & Format(Now, "dd.mm.yyyy") Sheets("SC").Select ActiveWorkbook.SaveCopyAs Filename:=FCesta & "\" & JmenosDatumem & ".xlsx" End Sub Děkuji za jakoukoli radu.

Ivanson

Přidáno: 10.10.16 18:56

Dobrý den, zkusil jsem "Uložit kopií sešitu pos zvoleným nazvem i s datem", ale ať dělám co dělám nemůžu tam narvat heslo pro úpravy. Jakmile tam přidám WriteResPassword hází to chybu. Bez hesla všecho jede. ThisWorkbook.SaveCopyAs Filename:=uloziste & "\" & rok_dochazky & " " & jmeno_z & ".xls" Prosím o pomoc.






Excel


Sdílejte

Pomohl Vám návod?
Sdílejte na Facebooku, G+
LinkedIn...

Nové články


Reklama


TOPlist Licence Creative Commons webarchiv rss XML

Stránky o MS Office (Excel) produktu společnosti Microsoft. Neslouží jako technická podpora.
| Email na autora: pavel.lasak@gmail.com | Copyright © : Pavel Lasák 2004 - 2024 |