02. februar 2004 - 11:37Der er
38 kommentarer og 3 løsninger
Hjælp til opretnming af bibliteker ønskes!
Jeg har et lille program, hvori jeg skal bruge oprettelse af bibliotker.
Eks "C:\Test\Jepper\Kim"
Men skriver jeg: Mkdir "C:\Test\Jepper\Kim", så melder den bare fejl Og det dur ikke at jeg laver en: Mkdir "C:\Test" Mkdir "C:\Test\Jepper" Mkdir "C:\Test\Jepper\Kim"
da de bliver lavet efter hvad folk har skrevet i en textbox.. altås det er op til folk selv, hvormange biblioteker de ligges i!
Måske kan nedenstående gøres en smule pænere, men det virker da som du ønsker det. Tilbage er bare at putte det rigtige DirNavn ind i makroen.
Sub Makro() Dim DirNavn As String, i As Integer, AntalDir As Integer, Split() As Integer DirNavn = "c:\temp\Jeppe\kim" If Right(DirNavn, 1) <> "\" Then DirNavn = DirNavn & "\" End If For i = 1 To Len(DirNavn) If Mid(DirNavn, i, 1) = "\" Then AntalDir = AntalDir + 1 ReDim Preserve Split(1 To AntalDir) Split(AntalDir) = i End If Next i For i = 1 To AntalDir MakeDir Left(DirNavn, Split(i)) Next i End Sub
Private Sub MakeDir(DirNavn As String) If Dir(DirNavn, vbDirectory) = "" Then 'Ser om directory eksisterer i forvejen MkDir DirNavn End If End Sub
Sub Makro() Dim DirNavn As String, i As Integer, Temp As String, BIB As Variant DirNavn = "C:\Test\Jepper\Kim" If Dir(DirNavn, vbDirectory) = "" Then 'Ser om directory eksisterer i forvejen BIB = Split(DirNavn, "\") Temp = "" For i = 0 To UBound(BIB) MakeDir Temp & BIB(i) Temp = Temp & BIB(i) & "\" Next i End If End Sub
Hvilken makro har du sat til at køre? Du skal køre (min eller Kabbak's) "Makro" - husk også at kopiere makroen MakeDir fra mit svar - uden den er der ikke nogen af dem som virker.
Private Sub Command1_Click() Dim DirNavn As String, i As Integer, Temp As String, BIB As Variant DirNavn = "C:\Test\Jepper\Kim" BIB = Split(DirNavn, "\") Temp = BIB(0) & "\" For i = 1 To UBound(BIB) Temp = Temp & BIB(i) If Dir(Temp, vbDirectory) = "" Then MkDir Temp End If Temp = Temp & "\" Next i End Sub
PS. vi skriver i Visual Basic, det er forhåbentlig det du bruger
Har lige prøvet den af en en HELT NY, helt ren VB program:
Private Sub Command1_Click() Dim DirNavn As String, i As Integer, Temp As String, BIB As Variant, Dir As String
DirNavn = Text1.Text BIB = Split(DirNavn, "\") Temp = BIB(0) & "\" For i = 1 To UBound(BIB) Temp = Temp & BIB(i) If Dir(Temp, vbDirectory) = "" Then MkDir Temp End If Temp = Temp & "\" Next i
End Sub
Det eneste der er, er en textbox og en knap.... der virker den heller ikke,,,,,
Private Sub Command1_Click() Dim DirNavn As String, i As Integer, Temp As String, BIB As Variant If Mid(Text1.Text, 2, 1) <> ":" Then MsgBox " Du skal skrive drev betegnelsen også" _ & vbLf & "f.eks. 'C:\ ' eller 'D:\ '" Exit Sub End If DirNavn = Text1.Text BIB = Split(DirNavn, "\") Temp = BIB(0) & "\" For i = 1 To UBound(BIB) Temp = Temp & BIB(i) If Dir(Temp, vbDirectory) = "" Then MkDir Temp End If Temp = Temp & "\" Next i Text1.Text = " Udført" End Sub
Alle ovenstående svar er stadig varianter over det jeg gav i første forsøg.... Hvis du stadig ikke kan få Dir(Temp, vbDirectory) til at virke, så vil ovenstående forsøg fortsat ikke virke.
kabbak >> Har jeg allerede skrevet tidligere (02/02-2004 15:25:12) - min pointe er sådan set bare at der ikke er tilføjet noget nyt til "debatten" siden vi startede i går. Hvis jogge havde kopieret vores første makroer, uden selv - af uransaglige grunde - at dim'e "Dir" samtidig med, ville det have virket uden al denne her ping-pong frem og tilbage.
Slo >> jeg har lavet min så den tjekker hvert bibliotek, om det eksisterer i forvejen, det kan jo være at det først det sidste nævnt der skal oprettes.
Exactly does I :-) Jeg bruger to sub's - den ene "MakeDir" tjekker om et givent bib. eksisterer og opretter det hvis det ikke gør. Den anden forskel der er, er brugen af VB's Split funktion, hvor jeg selv har "opfundet" en og du bruger den indbyggede.
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.