Avatar billede perhol Seniormester
04. marts 2013 - 10:18 Der er 2 kommentarer og
1 løsning

Lave mappe-sti og filnavn med VBA-kode

Jeg arbejder på en kommunal institution og har i flere år brugt en VBA-kode til at sikre at beboernes regnskaber blev gemt i rette mappe og med rette navn.
Koden checker om mappe-stien eksisterer ved hjælp af en funktion (CheckMakePath). Hvis ikke vil funktionen oprette den.
Mappe- og filnavn gives dels af tekst og dels af henvisning til celler i arket.
Celle i4 indeholder et bogstav for huset - Celle E2 indeholder beboerens fulde navn - Celle A4 indeholder en startdato for regnskabet.
Regnskabet bliver således gemt i en mappe der f.eks kan hedde S:\Institution\A-huset\Beboere\Beboernavn\Regnskab\2013 med filnavnet Regnskab 03-2013 Beboernavn.xls
Dette er koden jeg har brugt og den virker (det fremhævede er mappe-stien, det i normal font er filnavnet).

    With Sheets("Kassebog")
        ActiveWorkbook.SaveAs CheckMakePath( "S:\Institution\" & Sheets("Kassebog").Range("I4").Text & "-huset" & "\" & "Beboere" _
        & "\" & Sheets("Kassebog").Range("E2").Text & "\" & "Regnskab" & "\" & Format(Sheets("Kassebog").Range("A4"), "yyyy"))
_
        & "Regnskab " & Format(Sheets("Kassebog").Range("A4"), "mm-yyyy") & " " & Sheets("Kassebog").Range("E2").Text & ".xls"
    End With


Nu skal jeg så eksportere regnskabet til en anden institution. De ønsker en anden mappestruktur til beboernes regnskaber, og pludselig virker koden ikke!
Regnskabet ønskes gemt i en mappe der f.eks kan hedde S:\Institution\Hus B\Regnskabsår\Beboernavn med filnavnet Regnskab 03-2013 Beboernavn.xls
I stedet bliver mappe-stien S:\Institution\Hus B\Regnskabsår og filnavnet BeboernavnRegnskab 03-2013 Beboernavn.xls

    With Sheets("Kassebog")
        ActiveWorkbook.SaveAs CheckMakePath("S:Institution\Beboerøkonomi\" & "Hus " & Sheets("Kassebog").Range("I4").Text & "\" _
        & Format(Sheets("Kassebog").Range("A4"), "yyyy")) & "\"& Sheets("Kassebog").Range("E2").Text
_
        & "Regnskab " & Format(Sheets("Kassebog").Range("A4"), "mm-yyyy") & " " & Sheets("Kassebog").Range("E2").Text & ".xls"
    End With

Nå, tænkte jeg, så må jeg jo tilføje backslash sådan her & "\" .
Samme mappe-sti som før oprettes og en fejlprocedure meddeler mig at filen ikke er blevet gemt!

    With Sheets("Kassebog")
        ActiveWorkbook.SaveAs CheckMakePath("S:\Institution\Beboerøkonomi\" & "Hus " & Sheets("Kassebog").Range("I4").Text & "\" _
        & Format(Sheets("Kassebog").Range("A4"), "yyyy")) & "\"& Sheets("Kassebog").Range("E2").Text & "\"
_
        & "Regnskab " & Format(Sheets("Kassebog").Range("A4"), "mm-yyyy") & " " & Sheets("Kassebog").Range("E2").Text & ".xls"
    End With

Det er muligvis simpelt, men jeg kan altså ikke rigtigt fange hvad der lige sker her.
Er der nogen der kan hjælpe?
Avatar billede perhol Seniormester
05. marts 2013 - 00:51 #1
Har løst det ved hjælp af vbaexpress.com.

Jeg har flyttet sidst afsluttende parentes herfra:
& Format(Sheets("Kassebog").Range("A4"), "yyyy"))

og hertil:
"\"& Sheets("Kassebog").Range("E2").Text)
Avatar billede perhol Seniormester
05. marts 2013 - 00:52 #2
Simpelt og ligetil - når man altså kan få øje på det!
Avatar billede perhol Seniormester
05. marts 2013 - 00:52 #3
Tager selv point
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester