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.