Arbejde med dokumenter
På linje med arkfanerne er der 2-3 interessante objekter man kan tage fat i når man skal arbejde med dokumenter - det er Workbooks, ActiveWorkbook og ThisWorkbook.
Workbooks
Er en samling af alle åbne regneark. Her følger et par eksempler på anvendelse:
Workbooks("salg").Activate
Vil aktivere regnearket salg.xls.
Dim w As Workbook
For Each w In Workbooks
If w.Name <> ThisWorkbook.Name Then
w.Close savechanges:=True
End If
Next w
Vil gennemløbe alle åbne regnark og lukke alle undtagen det regneark, der indeholder makroen.
ThisWorkbook
Er et Workbook objekt, der peger på det regneark (den fil), der indeholder makroen.
ActiveWorkbook
Er igen et Workbook objekt, der, som navnet antyder, peger på aktive regneark. ActiveWorkbook bruger vi ofte sammen med Save eller SaveAs
ActiveWorkbook.Save
ActiveWorkbook.SaveAs
Workbook objektet har naturligvis en lang række metoder og egenskaber, der kan være nyttige i forskellige sammenhænge. Find dem ved at skrive ActiveWorkbook.
Dialoger
Der findes et Dialogs objekt, der kan bruges i relation til det at gemme regneark, men også i andre sammenhænge
Application.Dialogs(xlDialogSaveAs).Show "test"
Vil åbne gem som dialogen og foreslå at regnearket gemmes i roden på c-drevet med navnet test.xls.
Har du problemer med at styre hvilken mappe filen gemmes i kan du i stedet prøve at bruge
Filnavn = Application.GetSaveAsFilename("c:\", , , "Vælg filnavn")
Den vil åbne en dialog, hvor brugeren har mulighed for at vælge sti og skrive filnavn. Vær opmærksom på, at filen ikke bliver gemt, men at du få det valgte filnavn og sti ind i variablen Filnavn. Efterfølgende skal du så bruge ActiveWorkbook.SaveAs for at gemme. Og du kan spørge på om Filnavn = False for at finde ud af om brugeren faktisk har valgt noget i dialogen.
Variable
Også når vi arbejder med dokumenter er det en god idé at bruge variable til de forskellige dokumenter man arbejder med
Dim wkbResultat As Workbook
Set wkbResultat = ActiveWorkbook ' eller
Set wkbResultat = Workbooks.Open(sFilnavn)
Findes dokumentet
If Dir("c:\mitregneark.xls") <> "" Then
En lille film...
Se, hvordan man kan samle data sammen fra en række filer: