I den här självstudien lär du dig hur du använder VBA för att öppna och stänga Excel -arbetsbok på flera sätt.
Med VBA kan du öppna eller stänga filer med standardmetoderna .Öppen och .Stänga.
Om du vill lära dig att kontrollera om det finns en fil innan du försöker öppna filen kan du klicka på den här länken: VBA -fil finns
Öppna en arbetsbok i VBA
Öppna arbetsbok från sökvägen
Om du vet vilken fil du vill öppna kan du ange dess fullständiga sökvägsnamn i funktionen. Här är koden:
1 | Workbooks.Open "C: \ VBA Folder \ Sample file 1.xlsx" |
Denna rad i koden öppnar filen "Provfil 1" från "VBA -mappen".
Öppna arbetsbok - ActiveWorkbook
När du öppnar en arbetsbok blir den automatiskt ActiveWorkbook. Du kan referera till den nyöppnade arbetsboken så här:
1 | ActiveWorkbook.Save |
När du refererar till ett blad eller område och utelämnar arbetsbokens namn, antar VBA att du hänvisar till ActiveWorkbook:
1 | Sheets ("Sheet1"). Namn = "Inmatning" |
Öppna arbetsbok och tilldela en variabel
Du kan också öppna en arbetsbok och tilldela den direkt till en objektvariabel. Denna procedur öppnar en arbetsbok för wb variabel och spara sedan arbetsboken.
123456 | Sub OpenWorkbookToVariable ()Dim wb Som arbetsbokAnge wb = Workbooks.Open ("C: \ VBA -mapp \ provfil 1.xlsx")wb.SparaAvsluta Sub |
Att tilldela variabler arbetsböcker när de öppnas är det bästa sättet att hålla reda på dina arbetsböcker
Arbetsbok Dialogrutan Öppna fil
Du kan också utlösa dialogrutan Öppna fil i arbetsboken. Detta gör att användaren kan navigera till en fil och öppna den:
12345678 | Sub OpenWorkbook ()Dim strFile As StringstrFile = Application.GetOpenFilename ()Workbooks.Open (strFile)Avsluta Sub |
Som du kan se i bild 1 kan användare med denna metod välja vilken fil som ska öppnas. Dialogrutan Öppna fil kan anpassas kraftigt. Du kan som standard välja en viss mapp, välja vilka filtyper som är synliga (ex … xlsx bara) och mer. Läs vår handledning i dialogrutan Öppna fil för detaljerade exempel.
Öppna ny arbetsbok
Denna kodrad öppnar en ny arbetsbok:
1 | Arbetsböcker.Lägg till |
Öppna ny arbetsbok till variabel
Det här förfarandet öppnar en ny arbetsbok som tilldelar variabeln wb:
1234 | Sub OpenNewWorkbook ()Dim wb Som arbetsbokAnge wb = Workbooks.AddAvsluta Sub |
Öppna Syntax för arbetsbok
När du använder Workbooks.Open kanske du märker att det finns många alternativ när du öppnar arbetsboken:
Filnamnet krävs. Alla andra argument är valfria - och du behöver förmodligen inte känna till de flesta andra argumenten. Här är de två vanligaste:
Öppna arbetsbok Skrivskyddad
När arbetsboken öppnas skrivskyddad kan du inte spara över den ursprungliga filen. Detta förhindrar att filen redigeras av användaren.
1 | Workbooks.Open "C: \ VBA Folder \ Sample file 1.xlsx",, True |
Öppna lösenordsskyddad arbetsbok
En arbetsbok kan vara lösenordsskyddad. Använd den här koden för att öppna den lösenordsskyddade arbetsboken:
1 | Workbooks.Open "C: \ VBA Folder \ Sample file 1.xlsx",,, "password" |
Öppna arbetsbokens syntaxanteckningar
Lägg märke till att i bilden ovan inkluderade vi en parentes “(” för att visa syntaxen. Om du använder parentes när du arbetar med Workbooks.Open måste du tilldela arbetsboken till en variabel:
1234 | Sub OpenWB ()Dim wb Som arbetsbokStäll in wb = Workbooks.Open ("C: \ VBA Folder \ Sample file 1.xlsx", True, True)Avsluta Sub |
Stäng en arbetsbok i VBA
Stäng specifik arbetsbok
På samma sätt som att öppna en arbetsbok finns det flera sätt att stänga en fil. Om du vet vilken fil du vill stänga kan du använda följande kod:
1 | Workbooks.Close ("C: \ VBA Folder \ Sample file 1.xlsx") |
Denna kodrad stänger filen "Provfil 1" om den öppnas. Om inte, kommer det att returnera ett fel, så du bör ta hand om felhantering.
Stäng aktiv arbetsbok
Om du vill stänga den arbetsbok som för närvarande är aktiv, gör den här kodraden det möjligt för dig att göra det:
1 | ActiveWorkbook.Close |
Stäng alla öppna arbetsböcker
För att stänga alla öppna arbetsböcker kan du helt enkelt använda den här koden:
1 | Arbetsböcker. Stäng |
Stäng först öppnad arbetsbok
Detta stänger den första öppnade/skapade arbetsboken:
1 | Arbetsböcker (1) .Stäng |
Ersätt 1 med 2 för att stänga den andra öppnade / skapade arbetsboken och så vidare.
Stäng utan att spara
Detta stänger en arbetsbok utan att spara och utan att visa uppmaningen:
1 | ActiveWorkbook.Close -ändringar: = Falskt |
Spara och stäng utan uppmaning
På samma sätt kommer detta att spara och stänga en arbetsbok utan att visa uppmaningen att spara:
1 | ActiveWorkbook.Close -ändringar: = True |
Obs! Det finns flera andra sätt att ange om en arbetsbok ska sparas eller inte och även om du ska visa uppmaningar eller inte. Detta diskuteras mer detaljerat här.
Andra arbetsbok Öppna exempel
Öppna flera nya arbetsböcker
Denna procedur öppnar flera nya arbetsböcker och tilldelar de nya arbetsböckerna till en matris:
12345678 | Sub OpenMultipleNewWorkbooks ()Dim arrWb (3) Som arbetsbokDim i As IntegerFör i = 1 till 3Ställ in arrWb (i) = Workbooks.AddNästa iAvsluta Sub |
Öppna alla Excel -arbetsböcker i en mapp
Denna procedur öppnar alla Excel -arbetsböcker i en mapp med dialogrutan Öppna fil.
12345678910111213141516 | Sub OpenMultipleWorkbooksInFolder ()Dim wb Som arbetsbokDim dlgFD som FileDialogDim strFolder Som strängDim strFileName som strängAnge dlgFD = Application.FileDialog (msoFileDialogFolderPicker)Om dlgFD.Show = -1 DåstrFolder = dlgFD.SelectedItems (1) & Application.PathSeparatorstrFileName = Dir (strFolder & "*.xls*")Do While strFileName ""Ange wb = Workbooks.Open (strFolder & strFileName)strFileName = DirSlingaAvsluta omAvsluta Sub |
Kontrollera om en arbetsbok är öppen
Denna procedur testar om en arbetsbok är öppen:
1234567891011 | Sub TestByWorkbookName ()Dim wb Som arbetsbokFör varje wb i arbetsböckerIf wb.Name = "New Microsoft Excel Worksheet.xls" DåMsgBox "Hittade det"Avsluta Sub -samtalskoden här, vi lämnar bara för tillfälletAvsluta omNästaAvsluta Sub |
Workbook_Open Event
VBA -händelser är "triggers" som säger åt VBA att köra viss kod. Du kan ställa in arbetsbokshändelser för öppna, stänga, innan du sparar, efter spara och mer.
Läs vår Workbook_Open Event -handledning för att lära dig mer om att automatiskt köra makron när en arbetsbok öppnas.