07. december 2011 - 16:16Der er
12 kommentarer og 1 løsning
Kedeligt manuelt arbejde
På min arbejdsplads laver vi en kasseopgørelse for hver dag, da den skal sendes pr. mail hver aften. Nu skal vi til at lave det for 2012 så alle filerne til hele året er klar - Er der nogen smart måde at gøre det, så den "automatisk" laver filerne for et helt år, så de også har de rigtige navne (og den rigtige dato står inde i regnearket som passer til filnavnet?) i stedet for det kedelige manuelle arbejde?
Nej jeg har slet ingen systemer til at lave det. Sidste år sad min chef og gjorde det nemlig - og nu har jeg fået tjansen i år, så jeg tænkte der måtte være en lettere måde. (Ja selvfølgelig til det med datoerne, min fejl) :)
Ja det er samme ark som skal kopieres ud i alle årets dage (365 stk). Det ark som er "masteren" skal altså kopieres i 365 stk som hedder som ovenstående. Det eneste som skal ændre sig når de kopieres er navnet på filen og datoen som står inde i filen.
Function opgDato() opgDato = Mid(ActiveWorkbook.Name, 16, 10) End Function Sub Gem2012() Dim dato As Date Dim placering As String Dim i, d, m, y As Integer dato = "01-01-2012" placering = "C:\Documents and Settings\Administrator\Skrivebord\Kasseopgørelser\" For i = 1 To 365 dato = DateAdd("d", 1, dato) d = Left(dato, 2) m = Mid(dato, 4, 2) y = Right(dato, 4) ActiveWorkbook.SaveAs placering & "Kasseopgørelse " & y & "-" & m & "-" & d & ".xls" Next End Sub
Vær opmærksom på følgende!
I den celle i dit ark hvor den aktuelle dato skal stå skal du indtaste formlen =opgDato() Funktionen er blevet oprettet med ovenstående kode, og bemærk at det ikke vil virke hvis du omdøber filnavnet!
Linien der starter med placering = "C:\...\" skal du ændre til den fulde sti til den mappe hvori kasseopgørelserne skal placeres. Det er VIGTIGT at du afslutter med \
"Master" arket gemmer du med følgende filnavn "Kasseopgørelse 2012-01-01.xls" i den mappe du gerne vil have kasseopgørelserne i.
Næste år ændrer du følgende linie i koden dato = "01-01-2012" til dato = "01-01-2013" og gemmer filen som "Kasseopgørelse 2013-01-01", før du kører makroen!
Koden kan sagtens bruges i Excel 2007 (det er den version jeg har testet ovenstående i). Så skal du blot gemme masteren i 2007 format (.xlsx) og ændre der i koden hvor der står ".xls" til ".xlsx"
Har lige tilladt mig at skrive den en smule om, så den rent faktisk skriver datoen i regnearket - og arket gemmes uden makroer (hvis det gemmes som .xlsx med makroer kommer der en sikkerhedsadvarsel hver gang dokumentet åbnes).
Sub Gem2012() Dim dato As Date Dim placering, filename As String Dim i, d, m, y As Integer dato = "31-12-2011" placering = "c:\mappe" Workbooks.Open ("c:\master.xlsx") For i = 1 To 365 dato = DateAdd("d", 1, dato) Worksheets("Ark1").Range("A1").Value = dato d = Left(dato, 2) m = Mid(dato, 4, 2) y = Right(dato, 4) filename = "Kasseopgørelse " & y & "-" & m & "-" & d & ".xlsx" ActiveWorkbook.SaveCopyAs placering & filename Next End Sub
Kopier koden ind i et nyt VBA modul og erstat c:\mappe\ med stien hvor opgørelserne skal gemmes og erstat c:\master.xlsx med stien på "originalen/masteren".
Erstat desuden Ark1 med navnet arket (inde i regnearket) samt A1 med cellen som datoen skal skrives i.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.