Denne vejledning introducerer dig til at arbejde med Projektmappeobjekt i VBA.
Arbejdsbogens objekt
Først, for at interagere med projektmapper i VBA, skal du forstå Projektmappeobjekt.
Med projektmappeobjektet kan du referere til projektmapper med deres navn på følgende måde:
1 | Arbejdsbøger ("Book2.xlsm"). Aktiver |
Denne kode fungerer dog kun, hvis projektmappen er åben. Hvis projektmappen er lukket, skal du angive hele projektmappestien:
1 | Workbooks.Open ("C: \ Users \ StevePC2 \ Downloads \ book2.xlsm") |
I stedet for at skrive hele stien ud, hvis din ønskede projektmappe er i den samme mappe som projektmappen, hvor din kode er gemt, kan du bruge denne liniekode til at åbne projektmappen:
1 | Workbooks.Open (ThisWorkbook.Path & "\ book2.xlsm") |
Dette gør brug af ThisWorkbook -objektet, som vi vil diskutere i det næste afsnit.
Workbook Index Number
Sidst kan du henvise til projektmapper efter deres "indeksnummer". Indeksnummeret for en projektmappe svarer til den rækkefølge, som projektmappen blev åbnet (teknisk set er det projektbogens placering i projektmappens samling).
1 | Arbejdsbøger (1) .Aktiver |
Dette er nyttigt, hvis du vil gøre noget som at lukke den første (eller sidste) åbnede projektmappe.
Aktiver Workbook, ActiveWorkbook og ThisWorkbook
Hvis en projektmappe er IKKE AKTIV, kan du få adgang til projektmappens objekter på følgende måde:
1 | Arbejdsbøger ("Bog2.xlsm"). Ark ("Ark1"). Område ("A1"). Værdi = 1 |
Men hvis projektmappen er aktiv, kan du udelade projektmappeobjektet:
1 | Ark ("Ark1"). Område ("A1"). Værdi = 1 |
Og hvis du vil interagere med projektmappens aktive ark, kan du også udelade arkobjektet:
1 | Område ("A1"). Værdi = 1 |
Aktiver projektmappe
For at aktivere en projektmappe skal du bruge Aktiver metode.
1 | Arbejdsbøger ("Book2.xlsm"). Aktiver |
Nu kan du interagere med Book2s objekter uden eksplicit at angive projektmappens navn.
ActiveWorkbook
Det ActiveWorkbook objekt referere altid til den aktive projektmappe. Dette er nyttigt, hvis du gerne vil tildele ActiveWorkbook til en variabel, der skal bruges senere.
12 | Dim wb Som projektmappeIndstil wb = ActiveWorkbook |
Denne arbejdsbog
Det Denne arbejdsbog objekt refererer altid til den projektmappe, hvor den kørende kode er gemt. For at aktivere ThisWorkbook skal du bruge denne kodelinje:
1 | ThisWorkbook.Activate |
Åbn projektmappe
For at åbne en projektmappe skal du bruge Åben metode:
1 | Workbooks.Open ("C: \ Users \ StevePC2 \ Downloads \ book2.xlsm") |
Den nyåbnede projektmappe vil altid blive til ActiveWorkbook, så du nemt kan interagere med det.
1 | ActiveWorkbook.Save |
Den åbne metode har flere andre argumenter, så du kan åbne skrivebeskyttet, åbne en adgangskodebeskyttet projektmappe og mere. Det er dækket her i vores artikel om åbning / lukning af projektmapper.
Åbn og tildel til variabel
Du kan også åbne en projektmappe og tildele den til en variabel på samme tid:
12 | Dim wb Som projektmappeIndstil wb = Workbooks.Open ("C: \ Users \ StevePC2 \ Downloads \ book2.xlsm") |
Åbn dialogboksen Filer
Du kan også udløse dialogboksen Åbn fil sådan her:
12345678 | Sub OpenWorkbook ()Dim strFile Som strengstrFile = Application.GetOpenFilename ()Workbooks.Open (strFile)Afslut Sub |
Opret ny (Tilføj) projektmappe
Denne kodelinje opretter en ny projektmappe:
1 | Workbooks.Add |
Den nye projektmappe bliver nu til ActiveWorkbook, så du kan interagere med det (f.eks. gemme den nye projektmappe).
Føj ny projektmappe til variabel
Du kan også føje en ny projektmappe direkte til en variabel:
12 | Dim wb Som projektmappeIndstil wb = Workbooks.Add |
Luk projektmappe
Luk & Gem
Hvis du vil lukke en projektmappe med at gemme, skal du bruge Luk metode med Gem ændringer indstillet til SAND:
1 | ActiveWorkbook.Close SaveChanges: = True |
Luk uden Gem
For at lukke uden at gemme, indstil Gem ændringer lig med FALSK:
1 | ActiveWorkbook.Close SaveChanges: = Falsk |
Arbejdsbog Gem som
Det SaveAs metode bruges til at gemme en projektmappe som.
For at gemme en projektmappe med et nyt navn i det samme bibliotek kan du antyde at bruge dette:
1 | ActiveWorkbook.SaveAs "ny" |
hvor "ny" er det nye filnavn.
For at gemme en projektmappe i et nyt bibliotek med en bestemt filtypenavn skal du blot angive det nye bibliotek og filnavn:
1 | ActiveWorkbook.SaveAs "C: \ Users \ StevePC2 \ Downloads \ new.xlsm" |
Andre eksempler på projektmapper
Navn på projektmappe
Sådan får du navnet på en projektmappe:
1 | MsgBox ActiveWorkbook.Name |
Beskyt projektmappe
For at beskytte projektmappens struktur mod redigering kan du bruge Beskyt metode (adgangskode valgfri):
1 | Workbooks ("book1.xlsm"). Beskyt "password" |
For at afbeskytte en projektmappe skal du bruge Ubeskyttet metode:
1 | Arbejdsbøger ("book1.xlsm"). Fjern beskyttelsen af "adgangskode" |
Sløjfe igennem alle åbne projektmapper
Sådan går du igennem alle åbne projektmapper:
123456789 | Sub LoopThroughWBs ()Dim wb Som projektmappeFor hver wb i projektmapperMsgBox wb.NameNæste wbAfslut Sub |
Arbejdsbog Aktiver begivenhed
Du kan køre en kode, når en bestemt projektmappe åbnes med Workbook Open Event.
Placer denne procedure din projektmappes ThisWorkbook -modul:
123 | Private Sub Workbook_Open ()Ark ("ark1"). AktiverAfslut Sub |
Denne procedure aktiveres Ark 1 hver gang projektmappen åbnes.