VBA Arbeta med arbetsböcker (arbetsbokobjektet)

Denna guide kommer att presentera dig för att arbeta med Arbetsbokobjekt i VBA.

Arbetsbokobjektet

För det första, för att interagera med arbetsböcker i VBA, måste du förstå Arbetsbokobjekt.

Med arbetsbokobjektet kan du referera till arbetsböcker med deras namn så här:

1 Arbetsböcker ("Book2.xlsm"). Aktivera

Denna kod fungerar dock bara om arbetsboken är öppen. Om arbetsboken är stängd måste du ange hela arbetsbokens sökväg:

1 Workbooks.Open ("C: \ Users \ StevePC2 \ Downloads \ book2.xlsm")

I stället för att skriva ut hela sökvägen, om din önskade arbetsbok finns i samma katalog som arbetsboken där koden är lagrad, kan du använda denna radkod för att öppna arbetsboken:

1 Workbooks.Open (ThisWorkbook.Path & "\ book2.xlsm")

Detta använder sig av ThisWorkbook -objektet som vi kommer att diskutera i nästa avsnitt.

Workbook Index Number

Sist kan du referera till arbetsböcker med deras "indexnummer". Indexet för en arbetsbok motsvarar den ordning som arbetsboken öppnades (tekniskt sett är arbetsbokens position i arbetsboksamlingen).

1 Arbetsböcker (1) .Aktivera

Detta är användbart om du vill göra något som att stänga den första (eller sista) öppnade arbetsboken.

Aktivera Workbook, ActiveWorkbook och ThisWorkbook

Om en arbetsbok är INTE AKTIV, kan du komma åt arbetsbokens objekt så här:

1 Arbetsböcker ("Book2.xlsm"). Ark ("Sheet1"). Range ("A1"). Value = 1

Men om arbetsboken är aktiv kan du utelämna arbetsbokobjektet:

1 Ark ("Ark1"). Område ("A1"). Värde = 1

Och om du vill interagera med arbetsbokens aktiva blad kan du också utelämna arkobjektet:

1 Område ("A1"). Värde = 1

Aktivera arbetsbok

För att aktivera en arbetsbok, använd Aktivera metod.

1 Arbetsböcker ("Book2.xlsm"). Aktivera

Nu kan du interagera med Book2s objekt utan att uttryckligen ange arbetsbokens namn.

ActiveWorkbook

De ActiveWorkbook objekt hänvisar alltid till den aktiva arbetsboken. Detta är användbart om du vill tilldela ActiveWorkbook till en variabel som ska användas senare.

12 Dim wb Som arbetsbokAnge wb = ActiveWorkbook

Denna arbetsbok

De Denna arbetsbok objekt refererar alltid till arbetsboken där körkoden är lagrad. Använd denna kodrad för att aktivera ThisWorkbook:

1 ThisWorkbook.Activate

Öppna arbetsbok

Om du vill öppna en arbetsbok använder du Öppna metod:

1 Workbooks.Open ("C: \ Users \ StevePC2 \ Downloads \ book2.xlsm")

Den nyöppnade arbetsboken kommer alltid att bli ActiveWorkbook, så att du enkelt kan interagera med det.

1 ActiveWorkbook.Save

Den öppna metoden har flera andra argument, så att du kan öppna skrivskyddad, öppna en lösenordsskyddad arbetsbok och mer. Det täcks här i vår artikel om att öppna / stänga arbetsböcker.

Öppna och tilldela variabel

Du kan också öppna en arbetsbok och tilldela den till en variabel samtidigt:

12 Dim wb Som arbetsbokAnge wb = Workbooks.Open ("C: \ Users \ StevePC2 \ Downloads \ book2.xlsm")

Öppna dialogrutan för filer

Du kan också utlösa dialogrutan Öppna fil så här:

12345678 Sub OpenWorkbook ()Dim strFile As StringstrFile = Application.GetOpenFilename ()Workbooks.Open (strFile)Avsluta Sub

Skapa ny (Lägg till) arbetsbok

Denna kodrad skapar en ny arbetsbok:

1 Arbetsböcker.Lägg till

Den nya arbetsboken blir nu till ActiveWorkbook, så att du kan interagera med den (t.ex. spara den nya arbetsboken).

Lägg till ny arbetsbok till variabel

Du kan också lägga till en ny arbetsbok direkt till en variabel:

12 Dim wb Som arbetsbokAnge wb = Workbooks.Add

Stäng arbetsbok

Stäng och spara

Om du vill stänga en arbetsbok med att spara använder du Stäng metod med Spara ändringar inställt på TRUE:

1 ActiveWorkbook.Close SaveChanges: = True

Stäng utan Spara

För att stänga utan att spara, ställ in Spara ändringar lika med FALSE:

1 ActiveWorkbook.Close SaveChanges: = False

Arbetsbok Spara som

De SaveAs -metod används för att spara en arbetsbok som.

För att spara en arbetsbok med ett nytt namn kan du i samma katalog antyda att du använder detta:

1 ActiveWorkbook.Save Som "ny"

där "nytt" är det nya filnamnet.

Om du vill spara en arbetsbok i en ny katalog med ett specifikt filtillägg anger du helt enkelt den nya katalogen och filnamnet:

1 ActiveWorkbook.SaveAs "C: \ Users \ StevePC2 \ Downloads \ new.xlsm"

Andra Workbook VBA Exempel

Arbetsbokens namn

Så här får du namnet på en arbetsbok:

1 MsgBox ActiveWorkbook.Name

Skydda arbetsboken

För att skydda arbetsbokstrukturen från redigering kan du använda Skydda metod (lösenord valfritt):

1 Arbetsböcker ("book1.xlsm"). Skydda "lösenord"

För att avskydda en arbetsbok, använd Oskyddad metod:

1 Arbetsböcker ("book1.xlsm"). Skydda bort "lösenord"

Gå igenom alla öppna arbetsböcker

Så här går du igenom alla öppna arbetsböcker:

123456789 Sub LoopThroughWBs ()Dim wb Som arbetsbokFör varje wb i arbetsböckerMsgBox wb.NameNästa wbAvsluta Sub

Arbetsbok Aktivera händelse

Du kan köra lite kod när en specifik arbetsbok öppnas med Workbook Open Event.

Placera denna procedur i din arbetsboks ThisWorkbook -modul:

123 Private Sub Workbook_Open ()Ark ("blad1"). AktiveraAvsluta Sub

Denna procedur aktiveras Ark 1 varje gång arbetsboken öppnas.

wave wave wave wave wave