Hi Stefan,
folgende Funktion gibt Dir die Größe eines Ordner zurück. (OHNE Unterverzeichnisse!!!)
Aufgerufen wird sie so:
lngSize = GetFolderSize(„c:\winnt\system32“, „*.*“)
Public Function GetFolderSize(ByVal strPath As String, ByVal strWildCard As String) As Long
Dim objFso As Scripting.FileSystemObject
Dim objFolder As Scripting.Folder
Dim objFiles As Scripting.Files
Dim objFile As Scripting.File
Dim lngSize As Long
Set objFso = New FileSystemObject
Set objFolder = objFso.GetFolder(strPath)
Set objFiles = objFolder.Files
If strWildCard = „“ Then strWildCard = „*“
strWildCard = UCase$(strWildCard)
For Each objFile In objFiles
If UCase$(objFile.Name) Like strWildCard Then
lngSize = lngSize + objFile.Size
End If
Next
Set objFile = Nothing
Set objFiles = Nothing
Set objFolder = Nothing
Set objFso = Nothing
GetFolderSize = lngSize
End Function
Jetzt brauchst Du nur mehr den TreeView durchrattern und das sieht dann so aus: (unter der Annahme das im „Node.key“ der ganze Pfad steht!!! - der ganze Pfad ist ja eindeutig-einmalig und kann daher auch als „Key“ verwendet werden!!!)
Dim Node As MSComctlLib.Node
Dim l As Long
Dim lngSize as long
For l = 1 To Treeview1.Nodes.Count
Set Node = Treeview1.Nodes.Item(l)
If Node.Checked Then
lngSize = lngSize + GetFolderSize(Node.key, „*.*“)
End If
Next l
Debug.Print "Gesamt-Größe: " & lngSize
Schau’s Dir genau an … funktioniert nämlich!!
greets from MichL (Vienna)