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.