Sešit pro otevření / zavření VBA

V tomto kurzu se naučíte, jak pomocí VBA otevírat a zavírat sešit aplikace Excel několika způsoby.

VBA vám umožňuje otevírat nebo zavírat soubory pomocí standardních metod .Otevřeno a .Zavřít.

Pokud se chcete dozvědět, jak zkontrolovat, zda soubor existuje, než se pokusíte soubor otevřít, můžete kliknout na tento odkaz: Soubor VBA existuje

Otevřete sešit ve VBA

Otevřete sešit z cesty

Pokud víte, který soubor chcete otevřít, můžete ve funkci zadat jeho úplný název cesty. Zde je kód:

1 Sešity. Otevřete „C: \ Složka VBA \ Ukázkový soubor 1.xlsx“

Tento řádek kódu otevře soubor „Ukázkový soubor 1“ ze „Složky VBA“.

Otevřít sešit - ActiveWorkbook

Když sešit otevřete, automaticky se stane ActiveWorkbookem. Na nově otevřený sešit můžete odkazovat takto:

1 ActiveWorkbook.Save

Když odkazujete na list nebo rozsah a vynecháte název sešitu, VBA bude předpokládat, že odkazujete na ActiveWorkbook:

1 Listy („List1“). Název = „Vstup“

Otevřete sešit a přiřaďte proměnné

Můžete také otevřít sešit a přiřadit jej přímo k proměnné objektu. Tento postup otevře sešit do souboru wb proměnnou a poté sešit uložte.

123456 Sub OpenWorkbookToVariable ()Dim wb jako sešitNastavit wb = Workbooks.Open ("C: \ VBA Folder \ Sample file 1.xlsx")wb. UložitEnd Sub

Přiřazení sešitů k proměnným při jejich otevření je nejlepší způsob, jak sledovat své sešity

Dialog Otevřít soubor sešitu

Můžete také spustit sešit Dialogové okno Otevřít soubor. To umožňuje uživateli přejít k souboru a otevřít jej:

12345678 Sub OpenWorkbook ()Dim strFile jako řetězecstrFile = Application.GetOpenFilename ()Sešity. Otevřeno (strFile)End Sub

Jak můžete vidět na obrázku 1, s tímto přístupem si uživatelé mohou vybrat, který soubor otevřít. Dialogové okno Otevřít soubor lze výrazně přizpůsobit. Můžete nastavit výchozí pro určitou složku, zvolit, které typy souborů jsou viditelné (pouze ex… xlsx) a další. Podrobné příklady najdete v našem tutoriálu v dialogovém okně Otevřít soubor.

Otevřete nový sešit

Tento řádek kódu otevře nový sešit:

1 Sešity. Přidat

Otevřít nový sešit na proměnnou

Tento postup otevře nový sešit a přiřadí jej k proměnné wb:

1234 Sub OpenNový pracovní sešit ()Dim wb jako sešitNastavit wb = Workbooks.AddEnd Sub

Otevřete Syntaxe sešitu

Když používáte Workbooks.Open, můžete si všimnout, že při otevírání sešitu je k dispozici mnoho možností:

Název souboru je povinný. Všechny ostatní argumenty jsou volitelné - a pravděpodobně nebudete muset znát většinu ostatních argumentů. Zde jsou dvě nejběžnější:

Otevřít sešit jen pro čtení

Když je sešit otevřen jen pro čtení, nemůžete jej uložit přes původní soubor. Tím se zabrání tomu, aby uživatel soubor upravoval.

1 Sešity. Otevřete „C: \ Složka VBA \ Ukázkový soubor 1.xlsx“,, True

Otevřete sešit chráněný heslem

Sešit může být chráněn heslem. Pomocí tohoto kódu otevřete sešit chráněný heslem:

1 Sešity. Otevřete "C: \ Složka VBA \ Ukázkový soubor 1.xlsx",,, "heslo"

Otevřete poznámky k syntaxi sešitu

Všimněte si, že na výše uvedeném obrázku jsme zahrnuli závorku „(“ pro zobrazení syntaxe. Pokud používáte závorky při práci s Workbooks.Open, musíte sešit přiřadit proměnné:

1234 Sub OpenWB ()Dim wb jako sešitNastavit wb = Workbooks.Open ("C: \ VBA Folder \ Sample file 1.xlsx", True, True)End Sub

Zavřete sešit ve VBA

Zavřít konkrétní sešit

Podobně jako při otevírání sešitu existuje několik způsobů, jak zavřít soubor. Pokud víte, který soubor chcete zavřít, můžete použít následující kód:

1 Workbooks.Close ("C: \ Složka VBA \ Ukázkový soubor 1.xlsx")

Tento řádek kódu zavře soubor „Ukázkový soubor 1“, pokud je otevřen. Pokud ne, vrátí chybu, takže byste se měli postarat o zpracování chyb.

Zavřete aktivní sešit

Pokud chcete zavřít sešit, který je aktuálně aktivní, tento řádek kódu vám to umožní:

1 Aktivní pracovní kniha. Zavřít

Zavřete všechny otevřené sešity

Chcete -li zavřít všechny otevřené sešity, můžete jednoduše použít tento kód:

1 Sešity. Zavřít

Zavřít první otevřený sešit

Tím se zavře první otevřený/vytvořený sešit:

1 Sešity (1). Zavřít

Nahraďte 1 za 2 a zavřete druhý otevřený / vytvořený sešit atd.

Zavřít bez uložení

Tím zavřete sešit bez uložení a bez zobrazení výzvy k uložení:

1 ActiveWorkbook.Close savechanges: = False

Uložit a zavřít bez výzvy

Podobně to uloží a zavře sešit bez zobrazení výzvy k uložení:

1 ActiveWorkbook.Close savechanges: = True

Poznámka: Existuje několik dalších způsobů, jak označit, zda sešit uložit nebo ne, a také zda se mají výzvy zobrazovat nebo ne. Toto je podrobněji diskutováno zde.

Další otevřené sešity

Otevřete více nových sešitů

Tento postup otevře více nových sešitů a přiřadí nové sešity k poli:

12345678 Sub OpenMultipleNewWorkbooks ()Dim arrWb (3) jako sešitDim i As IntegerPro i = 1 až 3Nastavit arrWb (i) = sešityPříště jáEnd Sub

Otevřete všechny sešity aplikace Excel ve složce

Tento postup otevře všechny sešity aplikace Excel ve složce pomocí výběru dialogového okna Otevřít soubor.

12345678910111213141516 Sub OpenMultipleWorkbooksInFolder ()Dim wb jako sešitDim dlgFD jako FileDialogDim strFolder jako řetězecDim strFileName jako řetězecNastavit dlgFD = Application.FileDialog (msoFileDialogFolderPicker)Pokud dlgFD.Show = -1 PakstrFolder = dlgFD.SelectedItems (1) & Application.PathSeparatorstrFileName = Dir (strFolder & "*.xls*")Do while strFileName ""Nastavit wb = Workbooks.Open (strFolder & strFileName)strFileName = DirSmyčkaKonec IfEnd Sub

Zkontrolujte, zda je sešit otevřený

Tento postup otestuje, zda je sešit otevřený:

1234567891011 Dílčí testByWorkbookName ()Dim wb jako sešitPro každý wb v sešitechPokud wb.Name = "Nová aplikace Microsoft Excel Worksheet.xls", pakMsgBox „Nalezeno“Ukončete volací kód Sub 'zde, prozatím jen ukončímeKonec IfdalšíEnd Sub

Sešit_Otevřená událost

Události VBA jsou „spouštěče“, které VBA říkají, aby spustil určitý kód. Události sešitu můžete nastavit pro otevírání, zavírání, před uložením, po uložení a další.

Přečtěte si náš návod Workbook_Open Event, kde se dozvíte více o automatickém spouštění maker při otevření sešitu.

Vám pomůže rozvoji místa, sdílet stránku s přáteli

wave wave wave wave wave