Avatar billede hoell Nybegynder
30. maj 2007 - 19:58 Der er 3 kommentarer og
1 løsning

Oprette folders i flere niveauer i henhold til Liste i ark

Hej Jeg har et ark, der nogenlunde ser sådan her ud.

    A      B      C      D
1  Fol.1
2        Fol.1.1
3  Fol.2
4        Fol.2.1
5                  Fol.2.1.1
6  Fol.3
7  Fol.4
8        Fol.4.1

Og så videre, Listen er dynamisk, dog max fire niveauer (max kol. D).

Hvordan får jeg den til at løbe denne igennem og oprette disse med MKDIR?

På forhånd tak

/Carsten
Avatar billede kabbak Professor
30. maj 2007 - 22:03 #1
Public Sub LaVBib()
    Dim Sti As String, I As Integer, X As Integer, A As Variant
    A = Range("A1").CurrentRegion
    For I = 1 To UBound(A)
        If A(I, 1) = Empty Then
            A(I, 1) = A(I - 1, 1)
            If A(I, 2) = Empty Then
                A(I, 2) = A(I - 1, 2)
                If A(I, 3) = Empty Then
                    A(I, 3) = A(I - 1, 3)
                End If
            End If
        End If
    Next
    For I = 1 To UBound(A, 1)
        For X = 1 To UBound(A, 2)
            If A(I, X) <> Empty Then
                Sti = Sti & A(I, X) & "\"
            End If
        Next
MkDir ("C:\" & Left(Sti, Len(Sti) - 1)) ' husk at rette drev
Sti = ""
    Next
End Sub
Avatar billede hoell Nybegynder
30. maj 2007 - 22:25 #2
Hej Kabbak

Det virker perfekt, men kunne du forklare, hvad der sker. Jeg er lidt skæv på Ubound og currentregion.

Så en forklaring og et svar så er jeg lykkelig

/Carsten
Avatar billede kabbak Professor
30. maj 2007 - 23:51 #3
Public Sub LaVBib()
    Dim Sti As String, I As Integer, X As Integer, A As Variant
    A = Range("A1").CurrentRegion' finder det område omkring A1 der er data i
    For I = 1 To UBound(A)'UBound(A) fortæller mig hvor mange rækker der er
        If A(I, 1) = Empty Then
            A(I, 1) = A(I - 1, 1)' hvis A2 er tom, tages værdien fra A1
            If A(I, 2) = Empty Then
                A(I, 2) = A(I - 1, 2)' hvis B2 er tom og A2 var tom, tages værdien fra B1
                If A(I, 3) = Empty Then
                    A(I, 3) = A(I - 1, 3) ' hvis C2 er tom og B2 og A2 var tom tages værdien fra C1

                End If
            End If
        End If
    Next
    For I = 1 To UBound(A, 1)' Hvor mange rækker
        For X = 1 To UBound(A, 2)' Hvor mange kolonner
            If A(I, X) <> Empty Then
                Sti = Sti & A(I, X) & "\" ' putter dem i en streng
            End If
        Next
' opretter biblioteket
MkDir ("C:\" & Left(Sti, Len(Sti) - 1)) ' husk at rette drev
Sti = ""' tømmer strengen, så den er klar til næste række
    Next
End Sub
Avatar billede kabbak Professor
30. maj 2007 - 23:52 #4
et svar ;-))
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