"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

SubFolderaufruf in VBA

slayer5612 27.02.2004 - 15:12 828 20
Posts

slayer5612

Big d00d
Avatar
Registered: Aug 2001
Location: Hell
Posts: 131
Hallo Leut!

Ich hätt da mal a Frage an euch:
Ich hab eine Prozedur, die mich Ordner auswählen lässt, ich will aber, wenn ich einen Ordner auswähle,dass er mir die SubFolder die da eventl. vorhanden sind, auch miteinbezieht - brauch ich dann für andere sachen....*hehe*!
Ich wäre happy,wenn jemand eine Idee hätte, oder wenn jemand Zeit hat eventl auch ein Code Beispiel zeigt!

mfg

Slayer5612

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25423
FileSystemObject -> GetFolder(szPath) -> GetSubFolders()

wenn du willst kannst du auch source haben..

edit: tut mir leid, verschrieben.. SubFolders() heisst die funktion

slayer5612

Big d00d
Avatar
Registered: Aug 2001
Location: Hell
Posts: 131
ja den source würd ich gern auch haben!
danke!

mfg

Godded

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25423
der code geht ein verzeichnis (mit allen unterverzeichnissen) durch und ermittelt die anzahl der unterverzeichnisse aller unterverzeichnisse in dem angegebenen verzeichnis. hab ich verzeichnis schon gesagt? :p

Code:
Function GetSubFolderCount(folderCur) As Integer
On Error GoTo ExitWithZero

    Dim nFolders As Integer

    Set folderSubs = folderCur.SubFolders
    For Each folderSub In folderSubs
        nFolders = nFolders + GetSubFolderCount(folderSub) + 1
    Next

    GetSubFolderCount = nFolders
    Exit Function

ExitWithZero:
    GetSubFolderCount = 0
End Function

Sub ShowFolderInfo(szPath As String)
    Dim objFS As Object, _
        szOutput As String, _
        nSubFolders As Integer

    Set objFS = CreateObject("Scripting.FileSystemObject")
    Set folderRoot = objFS.GetFolder(szPath)
    Set folderSubs = folderRoot.SubFolders

    For Each folderSub In folderSubs
        nSubFolders = GetSubFolderCount(folderSub)
        szOutput = szOutput & folderSub.Name & " (" & nSubFolders & ")" & vbCrLf
    Next

    MsgBox szOutput
End Sub

Sub Lala()
    ShowFolderInfo "C:\Downloads\"
End Sub

slayer5612

Big d00d
Avatar
Registered: Aug 2001
Location: Hell
Posts: 131
hehe - ja das mim verzeichnis hats scho erwähnt!
Danke ich schau mal,dass ich das umsetzen kann bei mir!

many thx!

mfg

Slayer5612

slayer5612

Big d00d
Avatar
Registered: Aug 2001
Location: Hell
Posts: 131
du sorry,wenn ich wieder nerve ;) aber der hat mir in den Zeilen ein problem...

Set objFS = CreateObject("Scripting.FileSystemObject")
HIER-->> Set folderRoot = objFS.GetFolder(szPath)
Set folderSubs = folderRoot.SubFolders

Da passt erm was nicht und ich komm einfach nicht drauf
wär dankbar,wennst ma da weiterhelfen könntest -wir stehen ja kurz vom Ziel hehe ;)
mfg

Slayer5612

Bimminger

christoph-bimminger.at
Avatar
Registered: Nov 2001
Location: Linz
Posts: 684
hmmm welche fehlermeldung?
probier mal _für jeden dreck_ die variable mit datentyp anzulegen...

erzwingst mit "Option Explicit" in der erstn zeile des Moduls
und dann in der jeweiligen Funktion einfach "Private varName as Datentyp" bzw. Dim varName as Datentyp". vielleicht is das auch ein weg, den Fehler leichter zu finden.

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25423
welches vba und wie heisst die fehlermeldung?

slayer5612

Big d00d
Avatar
Registered: Aug 2001
Location: Hell
Posts: 131
VBA Acces 2003 und die Fehlermeldung heisst LaufZeitfehler 76 Pfad nicht gefunden - hab aber auf D:\Downloads einen Folder, falls das damit der gemeint ist

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25423
habs jetzt ebenfalls auf vba access 2003 probiert.. funktioniert. diese fehlermeldung bekomme ich wenn ich einen nicht vorhandenen ordner angebe. überprüf das lieber noch einmal.

slayer5612

Big d00d
Avatar
Registered: Aug 2001
Location: Hell
Posts: 131
ja - wie rufst du das auf?
ich hab einfach zum Testen einen Button gemacht und dem die prozedur lala reingeschrieben...

mfg

slayer55612

Bimminger

christoph-bimminger.at
Avatar
Registered: Nov 2001
Location: Linz
Posts: 684
hmm setz an breakpoint und schau mit der schnellüberwachung den wert in szPath an - dann siehst welchen Pfad er da verwendet (eine Zeile vor der wo der Fehler auftritt...)

oder schmeiß einfach ein MsgBox(szPath) rein dann müsstern auch ausgeben.

slayer5612

Big d00d
Avatar
Registered: Aug 2001
Location: Hell
Posts: 131
juhuuu

slayer5612

Big d00d
Avatar
Registered: Aug 2001
Location: Hell
Posts: 131
es geht !!! *FREU*!!

Danke mann!!
Oh bin ich glücklich!!*hehe*!
Danke noch mal!Echt nett von dir!

mfg

Slayer5612

slayer5612

Big d00d
Avatar
Registered: Aug 2001
Location: Hell
Posts: 131
eine Frage hab ich aber noch:

was machst das sz vor den Variablen - hat das eine Vordefinierte Aufgabe oder ist das nur so?
mfg

Slayer5612
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz