Avatar billede Champ_007 Nybegynder
07. februar 2013 - 10:25 Der er 10 kommentarer og
1 løsning

Oprette en mappe i VBA og give mappen navnet på det Excel ark man arbejder i

Jeg vil gerne oprette en ny mappe med navnet på den excel fil jeg har skrevet koden i.

Min mappestruktur er følgende:

Mappe (Priser) (Parent folder)

Følgende mapper ligger i mappen Priser:

Mappe (udtræk) --> her mit excel ark ligger

Mappe (CSV filer) --> i denne mappe vil jeg gerne oprette en ny mappe med navnet på min Excel fil.

Nogen gode bud på en vba kode?
Avatar billede kabbak Professor
07. februar 2013 - 12:51 #1
et forslag

Public Sub test()
Dim Sti As String, NY As String
Sti = ThisWorkbook.Path
NY = Split(ThisWorkbook.Name, ".")(0)
MkDir (Sti & "\CSV") & NY
End Sub
Avatar billede kabbak Professor
07. februar 2013 - 12:53 #2
der var lige smuttet en \

Public Sub test()
Dim Sti As String, NY As String
Sti = ThisWorkbook.Path
NY = Split(ThisWorkbook.Name, ".")(0)
MkDir (Sti & "\CSV\") & NY
End Sub
Avatar billede supertekst Ekspert
07. februar 2013 - 13:24 #3
Alternativ:
Rem VBA-koden er placeret under ark1 i den aktuelle fil)
Const målSti = "CSV filer"
Dim minSti As String, stier As Variant, filNavn As Variant
Public Sub opretNyMappe()
Rem stien til min fil
    minSti = ActiveWorkbook.Path

Rem opdel de enkelte sti i de enkelte mapper
    stier = Split(minSti, "\")
   
Rem isoler sidste mappe
    oversti = stier(UBound(stier))
   
Rem erstat sidste mappe med målsti
    nysti = Replace(minSti, oversti, målSti)
   
Rem opdel for at isolere .extend (forventes kun et punktum)
    filNavn = Split(ActiveWorkbook.Name, ".")
   
Rem opret mappe i den nye sti
    MkDir nysti & "\" & filNavn(0)
End Sub
Avatar billede Champ_007 Nybegynder
07. februar 2013 - 17:00 #4
Hvad mener du med 'Rem'?
Avatar billede supertekst Ekspert
07. februar 2013 - 17:19 #5
Rem = Remark /Kommentar
Avatar billede Champ_007 Nybegynder
08. februar 2013 - 10:19 #6
MkDir (Sti & "\CSV\") & NY

Koden melder fejl ved denne..
Avatar billede Champ_007 Nybegynder
08. februar 2013 - 10:22 #7
@ supertekst:

Jeg prøver koden.

Hvad mener du med dette?

Const målSti = "CSV filer" --> hvad står Const for?
Avatar billede supertekst Ekspert
08. februar 2013 - 10:32 #8
Const betyder at "noget" defineres som en Konstant - i modsætning til Dim der er er en erklæring af en Variabel.

D.v.s - at du kan ændre Const i koden, hvis der skal anvendes en anden mappe end CSV-filer
Avatar billede Champ_007 Nybegynder
08. februar 2013 - 10:46 #9
Det var egentlig smart. Jeg har nemlig defineret den som en string, da jeg ikke vidste hvad det betød.

Koden virker upåklageligt!

Så du får selvfølgelig points, men håber, at du lige vil forklare følgende:

oversti = stier(UBound(stier))

Hvad gør denne? Har læst mig til, at Split inddeler i en array.

Og til sidst - hvorfor er (0) med i Mkdir?
Avatar billede supertekst Ekspert
08. februar 2013 - 11:19 #10
Ved split får du opdelt en string i et array, som du selv nævner - d.v.s. i hver del af dette array er teksten mellem de enkelte skilletegn - her "\" - placeret.

Overstien sættes herefter til teksten i det sidste element i array - det er dette som Ubound (Upper Bound / Øverste grænse).

Replace erstatter så den nuværede mappe med den ønskede.

Filnavn er - f.eks. "MinFil.xlsx"
Der anvendes split igen med "." som skilletegn - d.v.s. at der er 2 elementer i array.
Første element i stier = stier(0) indeholder Minfil
Andet element i stier = stier(1) indeholder xlsx

Mappe skal kun hedde selve filnavn.
Avatar billede Champ_007 Nybegynder
08. februar 2013 - 11:35 #11
Tak for hjælpen.
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
Kurser inden for grundlæggende programmering

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