VBA Arbejde med projektmapper (projektmappeobjektet)

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.

wave wave wave wave wave