Denne guiden vil introdusere deg for å jobbe med Arbeidsbokobjekt i VBA.
Arbeidsbokobjektet
Først, for å samhandle med arbeidsbøker i VBA, må du forstå Arbeidsbokobjekt.
Med arbeidsbokobjektet kan du referere til arbeidsbøker ved navn slik:
1 | Arbeidsbøker ("Book2.xlsm"). Aktiver |
Denne koden fungerer imidlertid bare hvis arbeidsboken er åpen. Hvis arbeidsboken er lukket, må du oppgi hele arbeidsbokbanen:
1 | Workbooks.Open ("C: \ Users \ StevePC2 \ Downloads \ book2.xlsm") |
I stedet for å skrive ut hele banen, hvis ønsket arbeidsbok er i samme katalog som arbeidsboken der koden er lagret, kan du bruke denne linjekoden til å åpne arbeidsboken:
1 | Workbooks.Open (ThisWorkbook.Path & "\ book2.xlsm") |
Dette gjør bruk av ThisWorkbook -objektet som vi vil diskutere i neste avsnitt.
Arbeidsbokindeksnummer
Sist kan du referere arbeidsbøker til deres "indeksnummer". Indeksnummeret til en arbeidsbok tilsvarer rekkefølgen som arbeidsboken ble åpnet (teknisk sett er arbeidsbokens posisjon i arbeidsboksamlingen).
1 | Arbeidsbøker (1). Aktiver |
Dette er nyttig hvis du vil gjøre noe som å lukke den første (eller siste) åpnede arbeidsboken.
Aktiver arbeidsbok, ActiveWorkbook og ThisWorkbook
Hvis en arbeidsbok er IKKE AKTIV, kan du få tilgang til arbeidsbokens objekter slik:
1 | Arbeidsbøker ("Bok2.xlsm"). Ark ("Ark1"). Område ("A1"). Verdi = 1 |
Hvis arbeidsboken er aktiv, kan du imidlertid utelate arbeidsbokobjektet:
1 | Ark ("Ark1"). Område ("A1"). Verdi = 1 |
Og hvis du vil samhandle med arbeidsbokens aktive ark, kan du også utelate arkobjektet:
1 | Område ("A1"). Verdi = 1 |
Aktiver arbeidsbok
For å aktivere en arbeidsbok, bruk Aktiver metode.
1 | Arbeidsbøker ("Book2.xlsm"). Aktiver |
Nå kan du samhandle med Book2s objekter uten å eksplisitt oppgi arbeidsboknavnet.
ActiveWorkbook
De ActiveWorkbook objekt referer alltid til den aktive arbeidsboken. Dette er nyttig hvis du vil tilordne ActiveWorkbook til en variabel som skal brukes senere.
12 | Dim wb Som arbeidsbokSett wb = ActiveWorkbook |
Denne arbeidsboken
De Denne arbeidsboken objekt refererer alltid til arbeidsboken der løpekoden er lagret. For å aktivere ThisWorkbook, bruk denne kodelinjen:
1 | ThisWorkbook.Activate |
Åpne arbeidsbok
For å åpne en arbeidsbok, bruk Åpen metode:
1 | Workbooks.Open ("C: \ Users \ StevePC2 \ Downloads \ book2.xlsm") |
Den nyåpnede arbeidsboken vil alltid bli ActiveWorkbook, slik at du enkelt kan samhandle med det.
1 | ActiveWorkbook.Save |
Den åpne metoden har flere andre argumenter, som lar deg åpne skrivebeskyttet, åpne en passordbeskyttet arbeidsbok og mer. Det er dekket her i vår artikkel om Åpne / lukke arbeidsbøker.
Åpne og tilordne variabel
Du kan også åpne en arbeidsbok og tilordne den til en variabel samtidig:
12 | Dim wb Som arbeidsbokSett wb = Workbooks.Open ("C: \ Users \ StevePC2 \ Downloads \ book2.xlsm") |
Åpne fildialogboksen
Du kan også utløse dialogboksen Åpne fil slik:
12345678 | Sub OpenWorkbook ()Dim strFile As StringstrFile = Application.GetOpenFilename ()Workbooks.Open (strFile)Slutt Sub |
Opprett ny (Legg til) arbeidsbok
Denne kodelinjen vil opprette en ny arbeidsbok:
1 | Arbeidsbøker.Legg til |
Den nye arbeidsboken blir nå til ActiveWorkbook, slik at du kan samhandle med den (f.eks. lagre den nye arbeidsboken).
Legg til ny arbeidsbok i variabel
Du kan også legge til en ny arbeidsbok direkte i en variabel:
12 | Dim wb Som arbeidsbokSett wb = Workbooks.Add |
Lukk arbeidsbok
Lukk og lagre
For å lukke en arbeidsbok med lagring, bruk Lukk metode med Lagre endringer satt til TRUE:
1 | ActiveWorkbook.Close SaveChanges: = True |
Lukk uten Lagre
For å lukke uten å lagre, sett Lagre endringer lik FALSK:
1 | ActiveWorkbook.Close SaveChanges: = False |
Arbeidsbok Lagre som
De SaveAs metode brukes til å lagre en arbeidsbok som.
For å lagre en arbeidsbok med et nytt navn, i den samme katalogen, kan du antyde å bruke denne:
1 | ActiveWorkbook.SaveAs "ny" |
hvor "nytt" er det nye filnavnet.
For å lagre en arbeidsbok i en ny katalog med en bestemt filtype, angir du bare den nye katalogen og filnavnet:
1 | ActiveWorkbook.SaveAs "C: \ Users \ StevePC2 \ Downloads \ new.xlsm" |
Andre arbeidsbok VBA -eksempler
Navn på arbeidsbok
Slik får du navnet på en arbeidsbok:
1 | MsgBox ActiveWorkbook.Name |
Beskytt arbeidsbok
For å beskytte arbeidsbokstrukturen mot redigering, kan du bruke Beskytt metode (passord valgfritt):
1 | Arbeidsbøker ("book1.xlsm"). Beskytt "passord" |
For å fjerne beskyttelsen av en arbeidsbok, bruk UnProtect Method:
1 | Arbeidsbøker ("book1.xlsm"). Fjern beskyttelsen av "passord" |
Gå gjennom alle åpne arbeidsbøker
Slik går du gjennom alle åpne arbeidsbøker:
123456789 | Sub LoopThroughWBs ()Dim wb Som arbeidsbokFor hver wb i arbeidsbøkerMsgBox wb.NameNeste wbSlutt Sub |
Arbeidsbok Aktiver hendelse
Du kan kjøre noen kode når en bestemt arbeidsbok åpnes med Arbeidsbok Åpent arrangement.
Sett denne prosedyren i arbeidsbokens ThisWorkbook -modul:
123 | Private Sub Workbook_Open ()Ark ("ark1"). AktiverSlutt Sub |
Denne prosedyren aktiveres Ark 1 hver gang arbeidsboken åpnes.