I denne vejledning lærer du, hvordan du bruger VBA til at åbne og lukke Excel -projektmappe på flere måder.
VBA giver dig mulighed for at åbne eller lukke filer ved hjælp af standardmetoderne .Åben og .Tæt.
Hvis du vil lære at kontrollere, om der findes en fil, før du forsøger at åbne filen, kan du klikke på dette link: VBA -fil findes
Åbn en projektmappe i VBA
Åbn projektmappe fra sti
Hvis du ved, hvilken fil du vil åbne, kan du angive dens fulde stienavn i funktionen. Her er koden:
1 | Workbooks.Open "C: \ VBA Folder \ Sample file 1.xlsx" |
Denne linje i koden åbner filen "Sample file 1" fra "VBA -mappen".
Åbn projektmappe - ActiveWorkbook
Når du åbner en projektmappe, bliver den automatisk til ActiveWorkbook. Du kan referere til den nyåbnede projektmappe sådan:
1 | ActiveWorkbook.Save |
Når du refererer til et ark eller område og udelader projektmappens navn, antager VBA, at du refererer til ActiveWorkbook:
1 | Ark ("Ark1"). Navn = "Input" |
Åbn projektmappe, og tildel en variabel
Du kan også åbne en projektmappe og tildele den direkte til en objektvariabel. Denne procedure åbner en projektmappe til wb variabel, og gem derefter projektmappen.
123456 | Sub OpenWorkbookToVariable ()Dim wb Som projektmappeIndstil wb = Workbooks.Open ("C: \ VBA -mappe \ prøvefil 1.xlsx")wb. gemmeAfslut Sub |
Tildeling af projektmapper til variabler, når de åbnes, er den bedste måde at holde styr på dine projektmapper
Dialogboksen Åbn fil
Du kan også udløse dialogboksen Åbn fil i projektmappen. Dette giver brugeren mulighed for at navigere til en fil og åbne den:
12345678 | Sub OpenWorkbook ()Dim strFile Som strengstrFile = Application.GetOpenFilename ()Workbooks.Open (strFile)Afslut Sub |
Som du kan se i billede 1, kan brugerne med denne tilgang vælge, hvilken fil der skal åbnes. Dialogboksen Åbn fil kan tilpasses stærkt. Du kan som standard vælge en bestemt mappe, vælge hvilke filtyper der er synlige (f.eks. Kun xlsx) og mere. Læs vores selvstudie i dialogboksen Åbn fil for detaljerede eksempler.
Åbn ny projektmappe
Denne kodelinje åbner en ny projektmappe:
1 | Workbooks.Add |
Åbn ny projektmappe til variabel
Denne procedure åbner en ny projektmappe, der tildeler variabel wb:
1234 | Sub OpenNewWorkbook ()Dim wb Som projektmappeIndstil wb = Workbooks.AddAfslut Sub |
Åbn projektmappens syntaks
Når du bruger Workbooks.Open, vil du måske bemærke, at der er mange muligheder, når du åbner projektmappen:
Filnavnet er påkrævet. Alle andre argumenter er valgfri - og du behøver sandsynligvis ikke at kende de fleste andre argumenter. Her er de to mest almindelige:
Åben skrivebeskyttet skrivebog
Når projektmappen åbnes skrivebeskyttet, kan du ikke gemme over den originale fil. Dette forhindrer, at filen redigeres af brugeren.
1 | Workbooks.Open "C: \ VBA Folder \ Sample file 1.xlsx",, True |
Åbn adgangskodebeskyttet projektmappe
En projektmappe kan være beskyttet med adgangskode. Brug denne kode til at åbne den adgangskodebeskyttede projektmappe:
1 | Workbooks.Open "C: \ VBA Folder \ Sample file 1.xlsx",,, "password" |
Åbn projektmappens syntaksnotater
Bemærk, at i billedet ovenfor inkluderede vi en parentes “(” for at vise syntaksen. Hvis du bruger parentes, når du arbejder med Workbooks.Open, skal du tildele projektmappen til en variabel:
1234 | Sub OpenWB ()Dim wb Som projektmappeIndstil wb = Workbooks.Open ("C: \ VBA Folder \ Sample file 1.xlsx", True, True)Afslut Sub |
Luk en projektmappe i VBA
Luk specifik projektmappe
På samme måde som ved at åbne en projektmappe, er der flere måder at lukke en fil på. Hvis du ved, hvilken fil du vil lukke, kan du bruge følgende kode:
1 | Workbooks.Close ("C: \ VBA -mappe \ prøvefil 1.xlsx") |
Denne kodelinje lukker filen "Eksempelfil 1", hvis den åbnes. Hvis ikke, returnerer det en fejl, så du skal tage hånd om fejlhåndtering.
Luk aktiv projektmappe
Hvis du vil lukke den projektmappe, der i øjeblikket er aktiv, vil denne kodelinje gøre det muligt for dig at gøre det:
1 | ActiveWorkbook.Close |
Luk alle åbne projektmapper
For at lukke alle åbne projektmapper kan du blot bruge denne kode:
1 | Workbooks.Luk |
Luk første åbnede projektmappe
Dette lukker den første åbnede/oprettede projektmappe:
1 | Arbejdsbøger (1). Luk |
Erstat 1 med 2 for at lukke den anden åbnede / oprettede projektmappe og så videre.
Luk uden at gemme
Dette lukker en projektmappe uden at gemme og uden at gemme prompten:
1 | ActiveWorkbook.Luk gemte ændringer: = Falsk |
Gem og luk uden prompt
Tilsvarende vil dette gemme og lukke en projektmappe uden at vise gemme -prompten:
1 | ActiveWorkbook.Close -ændringer: = True |
Bemærk: Der er flere andre måder at angive, om en projektmappe skal gemmes eller ej, og om der skal vises prompts eller ej. Dette diskuteres mere detaljeret her.
Andre eksempler på åbne projektmapper
Åbn flere nye projektmapper
Denne procedure åbner flere nye projektmapper og tildeler de nye projektmapper til en matrix:
12345678 | Sub OpenMultipleNewWorkbooks ()Dim arrWb (3) Som projektmappeDim i As IntegerFor i = 1 til 3Indstil arrWb (i) = Workbooks.AddNæste iAfslut Sub |
Åbn alle Excel -projektmapper i en mappe
Denne procedure åbner alle Excel -projektmapper i en mappe ved hjælp af dialogboksen Åbn fil.
12345678910111213141516 | Sub OpenMultipleWorkbooksInFolder ()Dim wb Som projektmappeDim dlgFD som FileDialogDim strFolder Som strengDim strFileName som strengIndstil dlgFD = Application.FileDialog (msoFileDialogFolderPicker)Hvis dlgFD.Show = -1 SåstrFolder = dlgFD.SelectedItems (1) & Application.PathSeparatorstrFileName = Dir (strFolder & "*.xls*")Do While strFileName ""Indstil wb = Workbooks.Open (strFolder & strFileName)strFileName = DirSløjfeAfslut HvisAfslut Sub |
Kontroller, om en projektmappe er åben
Denne procedure tester, om en projektmappe er åben:
1234567891011 | Sub TestByWorkbookName ()Dim wb Som projektmappeFor hver wb i projektmapperHvis wb.Name = "New Microsoft Excel Worksheet.xls" HerefterMsgBox "fandt det"Afslut Sub 'opkaldskode her, vi afslutter lige nuAfslut HvisNæsteAfslut Sub |
Workbook_Open begivenhed
VBA -begivenheder er "triggere", der fortæller VBA at køre bestemt kode. Du kan konfigurere projektmappehændelser til åbne, lukke, før gemme, efter gemme og mere.
Læs vores Workbook_Open Event -vejledning for at lære mere om automatisk at køre makroer, når en projektmappe åbnes.