Arbejde med dokumenter
Beskrivelse
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:\"
Øvelse
Hent dette regneark. Lav følgende makroer
- En makro, spørger brugeren, hvad regnearket skal hedde og efterfølgende gemmer med det ønskede navn
- En makro, der automatisk gemmer regnearket med et filnavn, der indeholder dagsdato
- En makro, der gemmer regnearket med et filnavn, der indeholder datoen for den sidste postering i datasættet
- En makro, der danner et filnavn og giver brugeren mulighed for at ændre navnet inden der gemmes (via. gem fil dialogen)
Læg de 4 makroer på hver deres knap og send regnearket til mig.
Løsning
Se mit løsningsforslag her.
Koden ser sådan her ud:
Sub SimpelGem() filnavn = InputBox("Hvad skal filen hedde?", "Skal vi gemme?") ActiveWorkbook.SaveAs FileName:=filnavn End Sub Sub AutomatiskDatoGem() filnavn = "Salgsdata fra " & Date ActiveWorkbook.SaveAs FileName:=filnavn End Sub Sub AutomatiskPosteringsGem() Range("B1").Sort key1:=Range("b1"), Order1:=xlDescending, header:=xlYes filnavn = "Salgsdata sidste post den " + CStr(Range("b2").Value) ActiveWorkbook.SaveAs FileName:=filnavn End Sub Sub AutomatiskGemDialog() Range("B1").Sort key1:=Range("b1"), Order1:=xlDescending, header:=xlYes filnavn = "Salgsdata sidste post den " + CStr(Range("b2").Value) Application.Dialogs(xlDialogSaveAs).Show filnavn End Sub Bemærk, at dette - som vi tidligere har set - også kan kombineres med hændelsesstyringen på dokument og arkfaner.
Brug for hjælp til VBA, VSTO eller SQL?
Scient Data tilbyder professionel IT-konsulentbistand
Kontakt Scient Data →Arbejde med dokumenter
Beskrivelse
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:\"
Øvelse
Hent dette regneark. Lav følgende makroer
- En makro, spørger brugeren, hvad regnearket skal hedde og efterfølgende gemmer med det ønskede navn
- En makro, der automatisk gemmer regnearket med et filnavn, der indeholder dagsdato
- En makro, der gemmer regnearket med et filnavn, der indeholder datoen for den sidste postering i datasættet
- En makro, der danner et filnavn og giver brugeren mulighed for at ændre navnet inden der gemmes (via. gem fil dialogen)
Læg de 4 makroer på hver deres knap og send regnearket til mig.
Løsning
Se mit løsningsforslag her.
Koden ser sådan her ud:
Sub SimpelGem() filnavn = InputBox("Hvad skal filen hedde?", "Skal vi gemme?") ActiveWorkbook.SaveAs FileName:=filnavn End Sub Sub AutomatiskDatoGem() filnavn = "Salgsdata fra " & Date ActiveWorkbook.SaveAs FileName:=filnavn End Sub Sub AutomatiskPosteringsGem() Range("B1").Sort key1:=Range("b1"), Order1:=xlDescending, header:=xlYes filnavn = "Salgsdata sidste post den " + CStr(Range("b2").Value) ActiveWorkbook.SaveAs FileName:=filnavn End Sub Sub AutomatiskGemDialog() Range("B1").Sort key1:=Range("b1"), Order1:=xlDescending, header:=xlYes filnavn = "Salgsdata sidste post den " + CStr(Range("b2").Value) Application.Dialogs(xlDialogSaveAs).Show filnavn End Sub Bemærk, at dette - som vi tidligere har set - også kan kombineres med hændelsesstyringen på dokument og arkfaner.
Brug for hjælp til VBA, VSTO eller SQL?
Scient Data tilbyder professionel IT-konsulentbistand
Kontakt Scient Data →