VBA arbeider med arbeidsbøker (arbeidsbokobjektet)

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.

wave wave wave wave wave