I denne opplæringen lærer du hvordan du bruker VBA til å åpne og lukke Excel -arbeidsbok på flere måter.
VBA lar deg åpne eller lukke filer ved hjelp av standardmetodene .Åpen og .Lukk.
Hvis du vil lære å kontrollere om det finnes en fil før du prøver å åpne filen, kan du klikke på denne lenken: VBA -fil finnes
Åpne en arbeidsbok i VBA
Åpne arbeidsbok fra banen
Hvis du vet hvilken fil du vil åpne, kan du angi hele banenavnet i funksjonen. Her er koden:
1 | Workbooks.Open "C: \ VBA Folder \ Sample file 1.xlsx" |
Denne linjen i koden åpner "Eksempelfil 1" -fil fra "VBA -mappen".
Åpne arbeidsbok - ActiveWorkbook
Når du åpner en arbeidsbok, blir den automatisk til ActiveWorkbook. Du kan referere til den nylig åpnede arbeidsboken slik:
1 | ActiveWorkbook.Save |
Når du refererer til et ark eller område og utelater arbeidsboknavnet, antar VBA at du refererer til ActiveWorkbook:
1 | Ark ("Ark1"). Navn = "Inndata" |
Åpne arbeidsbok og tilordne en variabel
Du kan også åpne en arbeidsbok og tildele den direkte til en objektvariabel. Denne prosedyren åpner en arbeidsbok for wb variabel og lagre deretter arbeidsboken.
123456 | Sub OpenWorkbookToVariable ()Dim wb Som arbeidsbokSett wb = Workbooks.Open ("C: \ VBA -mappe \ prøvefil 1.xlsx")wb. lagreSlutt Sub |
Å tilordne arbeidsbøker til variabler når de åpnes er den beste måten å holde oversikt over arbeidsbøkene dine
Arbeidsbok Åpne fildialogbok
Du kan også aktivere dialogboksen Åpne fil i arbeidsboken. Dette lar brukeren navigere til en fil og åpne den:
12345678 | Sub OpenWorkbook ()Dim strFile As StringstrFile = Application.GetOpenFilename ()Workbooks.Open (strFile)Slutt Sub |
Som du kan se i Bilde 1, kan brukerne med denne tilnærmingen velge hvilken fil som skal åpnes. Dialogboksen Åpen fil kan tilpasses sterkt. Du kan som standard velge en bestemt mappe, velge hvilke filtyper som er synlige (f.eks. Bare xlsx) og mer. Les opplæringen vår i dialogboksen Åpen fil for detaljerte eksempler.
Åpne ny arbeidsbok
Denne kodelinjen åpner en ny arbeidsbok:
1 | Arbeidsbøker.Legg til |
Åpne ny arbeidsbok til variabel
Denne prosedyren åpner en ny arbeidsbok, og tilordner den til variabel wb:
1234 | Sub OpenNewWorkbook ()Dim wb Som arbeidsbokSett wb = Workbooks.AddSlutt Sub |
Åpne arbeidsboksyntaks
Når du bruker Workbooks.Open, vil du kanskje legge merke til at det er mange alternativer tilgjengelig når du åpner arbeidsboken:
Filnavnet er nødvendig. Alle andre argumenter er valgfrie - og du trenger sannsynligvis ikke å kjenne de fleste andre argumentene. Her er de to vanligste:
Åpne skrivebok
Når arbeidsboken åpnes skrivebeskyttet, kan du ikke lagre den originale filen. Dette forhindrer at filen redigeres av brukeren.
1 | Workbooks.Open "C: \ VBA Folder \ Sample file 1.xlsx",, True |
Åpne passordbeskyttet arbeidsbok
En arbeidsbok kan være passordbeskyttet. Bruk denne koden til å åpne den passordbeskyttede arbeidsboken:
1 | Workbooks.Open "C: \ VBA Folder \ Sample file 1.xlsx",,, "password" |
Åpne arbeidsbokens syntaksnotater
Legg merke til at i bildet ovenfor inkluderte vi en parentes “(” for å vise syntaksen. Hvis du bruker parentes når du arbeider med Workbooks.Open, må du tilordne arbeidsboken til en variabel:
1234 | Sub OpenWB ()Dim wb Som arbeidsbokSett wb = Workbooks.Open ("C: \ VBA -mappe \ prøvefil 1.xlsx", True, True)Slutt Sub |
Lukk en arbeidsbok i VBA
Lukk spesifikk arbeidsbok
På samme måte som å åpne en arbeidsbok, er det flere måter å lukke en fil på. Hvis du vet hvilken fil du vil lukke, kan du bruke følgende kode:
1 | Workbooks.Close ("C: \ VBA -mappe \ prøvefil 1.xlsx") |
Denne kodelinjen lukker filen "Eksempelfil 1" hvis den åpnes. Hvis ikke, vil det returnere en feil, så du bør ta vare på feilhåndtering.
Lukk aktiv arbeidsbok
Hvis du vil lukke arbeidsboken som er aktiv for øyeblikket, vil denne kodelinjen gjøre deg i stand til å gjøre det:
1 | ActiveWorkbook.Lukk |
Lukk alle åpne arbeidsbøker
For å lukke alle åpne arbeidsbøker, kan du bare bruke denne koden:
1 | Arbeidsbøker. Lukk |
Lukk først åpnet arbeidsbok
Dette lukker den første åpnede/opprettede arbeidsboken:
1 | Arbeidsbøker (1) .Lukk |
Erstatt 1 med 2 for å lukke den andre åpnede / opprettede arbeidsboken og så videre.
Lukk uten å lagre
Dette lukker en arbeidsbok uten å lagre og uten å vise lagringsmeldingen:
1 | ActiveWorkbook.Lukke lagringsendringer: = Falske |
Lagre og lukk uten spørsmål
På samme måte vil dette lagre og lukke en arbeidsbok uten å vise lagringsmeldingen:
1 | ActiveWorkbook.Close -endringer: = True |
Merk: Det er flere andre måter å indikere om du vil lagre eller ikke lagre en arbeidsbok, og også om du vil vise ledetekster eller ikke. Dette diskuteres mer detaljert her.
Andre eksempler på åpne arbeidsbøker
Åpne flere nye arbeidsbøker
Denne prosedyren åpner flere nye arbeidsbøker og tilordner de nye arbeidsbøkene til en matrise:
12345678 | Sub OpenMultipleNewWorkbooks ()Dim arrWb (3) Som arbeidsbokDim i As IntegerFor i = 1 til 3Sett arrWb (i) = Workbooks.AddNeste jegSlutt Sub |
Åpne alle Excel -arbeidsbøker i en mappe
Denne prosedyren åpner alle Excel -arbeidsbøker i en mappe ved hjelp av dialogboksen Åpne fil.
12345678910111213141516 | Sub OpenMultipleWorkbooksInFolder ()Dim wb Som arbeidsbokDim dlgFD Som FileDialogDim strFolder As StringDim strFileName som strengSett dlgFD = Application.FileDialog (msoFileDialogFolderPicker)Hvis dlgFD.Show = -1 DastrFolder = dlgFD.SelectedItems (1) og Application.PathSeparatorstrFileName = Dir (strFolder & "*.xls*")Do While strFileName ""Sett wb = Workbooks.Open (strFolder & strFileName)strFileName = DirLøkkeSlutt omSlutt Sub |
Sjekk om en arbeidsbok er åpen
Denne prosedyren vil teste om en arbeidsbok er åpen:
1234567891011 | Sub TestByWorkbookName ()Dim wb Som arbeidsbokFor hver wb i arbeidsbøkerIf wb.Name = "New Microsoft Excel Worksheet.xls" DaMsgBox "Fant det"Avslutt Sub -ringekoden her, vi går bare ut for nåSlutt omNesteSlutt Sub |
Arbeidsbok_Åpent arrangement
VBA -hendelser er "utløsere" som forteller VBA å kjøre bestemt kode. Du kan sette opp arbeidsbokhendelser for åpen, lukk, før lagring, etter lagring og mer.
Les vår Workbook_Open Event -opplæring for å lære mer om automatisk kjøring av makroer når en arbeidsbok åpnes.