Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Verzeichnis auslesen...

Verzeichnis auslesen...
11.03.2007 18:16:42
WalterMB
Hallo Fachfrauen und Fachmänner,
habe mal eine Frage:
Kann man die Festplatte C die darin enthaltenen Verzeichnisse auslesen bzw. ich brauch die Verzeichnis-
Größe ?
Wenn möglich in einer Datei ?
gruß WalterMB
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Verzeichnis auslesen...
11.03.2007 18:47:00
WalterMB
Hallo Case,
habe es so reingesetzt, leider Fehlermeldung:
Sub Verz_Größe_ermitteln()
Dim FSO As New Scripting.FileSystemObject
Dim Folder As Scripting.Folder
Set Folder = FSO.GetFolder("d:\1_Gesamtdaten\")
MsgBox Folder.Size
End Sub

und so:
Public
Function FolderSize(ByVal strFolder As String) _
As Double
Dim FSO As New Scripting.FileSystemObject
Dim Folder As Scripting.Folder
' Ggf. abschliessenden Backslash anfügen
If Right$(strFolder, 1) <> "\" Then _
strFolder = strFolder & "\"
Set Folder = FSO.GetFolder(strFolder)
FolderSize = Folder.Size
End Function

gruß WalterMB
Anzeige
AW: Verzeichnis auslesen...
11.03.2007 18:58:00
Case
Hallo,
diese Zeile berücksichtigt?
"Ach ja - einen Verweis brauchen Sie noch - und zwar auf die Microsoft Scripting Runtime."
Also im VBA-Editor unter Extras - Verweise... diesen Verweis setzen.
Servus
Case
AW: Verzeichnis auslesen...
11.03.2007 19:15:00
WalterMB
Hallo Case,
habe ich gemacht, bleibt hier stehen:
Set Folder = FSO.GetFolder("c:\0_Dateimanager\")
Objekt erforderlich!
geht das nicht irgenwie einfacher ?
Ich möchte die Festplatte z.b. C:\ die Verzeichnisse aufführen und daneben die Größe/Bytes?
gruß Walter MB
Anzeige
AW: Verzeichnis auslesen...
11.03.2007 20:22:00
Case
Hallo,
probier es mal so (Pfad anpassen):
Option Explicit
Dim FSO, FO, FU, F
Dim lRow As Long
Dim icol As Integer
Public Sub Ordner_Auflisten()
Set FSO = CreateObject("Scripting.FileSystemObject")
icol = 0
lRow = 0
GetSubFolders "C:\Excel"
End Sub
Function GetSubFolders(Pfad)
Set FO = FSO.GetFolder(Pfad)
Set FU = FO.SubFolders
Dim comText As String
On Error Resume Next
For Each F In FU
lRow = lRow + 1
icol = icol + 1
Cells(lRow, icol) = F.Name
comText = F.Size & " Byte"
Cells(lRow, icol).AddComment.Text Text:=comText
GetSubFolders F.Path
Next
icol = icol - 1
End Function

Größe in Byte wird in Kommentar geschrieben.
Servus
Case
Anzeige
Hallo Case
12.03.2007 15:16:21
Walter
Hallo Case,
die entsprechenden Unterverzeichnisse, sind Spitze.
Geht das noch das daneben die entsprechen Größe geschrieben wird ?
mfg WalterMB
AW: Hallo Case
12.03.2007 21:59:00
Case
Hallo,
dann so:
Option Explicit
Dim fso, FO, FU, F
Dim lRow As Long
Dim icol As Integer
Public Sub Ordner_Auflisten()
Set fso = CreateObject("Scripting.FileSystemObject")
icol = 0
lRow = 0
GetSubFolders "C:\Excel"
End Sub
Function GetSubFolders(Pfad)
Set FO = fso.getfolder(Pfad)
Set FU = FO.subfolders
On Error Resume Next
For Each F In FU
lRow = lRow + 1
icol = icol + 1
Cells(lRow, icol) = F.Name
Cells(lRow, icol + 1) = F.Size
GetSubFolders F.Path
Next
icol = icol - 1
End Function

Angaben sind in Byte - musst Du halt noch umrechnen, wenn Du andere Angaben willst.
Servus
Case
Anzeige
Nochmals Danke für die Hilfe -)
12.03.2007 22:30:03
Walter
Guten Abend Case,
herzlichen Dank für die Unterstützung,
mfg WalterMB
AW: Verzeichnis auslesen...
ransi
HAllo Walter
Teste mal diesen Code:
Option Explicit
Dim Z

Public Sub Aufruf()
Dim Ordnerpfad
Dim dat
Set dat = Application.FileDialog(msoFileDialogFolderPicker)
Z = 1
With dat
    .Title = "Einfach irgendwas..."
    .InitialFileName = "d:\" 'oder was auch immer
    If .Show = -1 Then Schreiben .SelectedItems(1), True
    'true wenn die Unterordner auch wieder geschrieben werden sollen
    'Sonst false oder weglassen
End With

End Sub


Public Function Schreiben(V, Optional sbfolds As Boolean = False)
Dim fso As Object
Dim datei
Dim Unterordner
On Error Resume Next
Set fso = CreateObject("Scripting.FileSystemObject")
Set datei = fso.getfolder(V)
Select Case sbfolds
    Case True
        For Each Unterordner In datei.subfolders
            Cells(Z, 1) = Unterordner.Path
            Cells(Z, 2) = Unterordner.Size
            Z = Z + 1
            Schreiben Unterordner, True
        Next
    Case False
        For Each Unterordner In datei.subfolders
            Cells(Z, 1) = Unterordner.Path
            Cells(Z, 2) = Unterordner.Size
            Z = Z + 1
        Next
End Select
Set fso = Nothing
Set datei = Nothing
End Function


ransi
Anzeige
Danke -)
12.03.2007 15:12:54
Walter
Hallo Ransi,
Danke es klappt.
Genau das wollt ich, zum aussuchen etc.
mfg walterMB
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Verzeichnis auslesen in Excel mit VBA


Schritt-für-Schritt-Anleitung

  1. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Neues Modul einfügen: Klicke mit der rechten Maustaste auf "VBAProject (deineDatei.xlsx)" > Einfügen > Modul.
  3. Code eingeben: Füge den folgenden Code in das Modul ein, um die Ordnerstruktur auszulesen:
Option Explicit
Dim fso, FO, FU, F
Dim lRow As Long
Dim icol As Integer

Public Sub Ordner_Auflisten()
    Set fso = CreateObject("Scripting.FileSystemObject")
    icol = 0
    lRow = 0
    GetSubFolders "C:\DeinPfad" ' Passe den Pfad an
End Sub

Function GetSubFolders(Pfad)
    Set FO = fso.getfolder(Pfad)
    Set FU = FO.subfolders
    On Error Resume Next
    For Each F In FU
        lRow = lRow + 1
        icol = icol + 1
        Cells(lRow, icol) = F.Name
        Cells(lRow, icol + 1) = F.Size ' Größe in Byte
        GetSubFolders F.Path
    Next
    icol = icol - 1
End Function
  1. Makro ausführen: Schließe den VBA-Editor und gehe zurück zu Excel. Führe das Makro Ordner_Auflisten aus, um die Verzeichnisstruktur in Excel anzuzeigen.

Häufige Fehler und Lösungen

  • Objekt erforderlich: Achte darauf, dass der Pfad korrekt ist und dass du die Microsoft Scripting Runtime in den Verweisen aktiviert hast.
  • Fehlermeldung beim Ausführen: Wenn du eine Fehlermeldung erhältst, überprüfe, ob der angegebene Ordner existiert und ob du die richtigen Berechtigungen hast.
  • Keine Daten angezeigt: Stelle sicher, dass der Pfad zu einem Verzeichnis führt, das Unterordner enthält.

Alternative Methoden

Wenn du kein VBA verwenden möchtest, kannst du auch die Funktion DIR nutzen, um Dateien und Ordner in Excel auszulesen. Hier ein Beispiel:

Sub VerzeichnisAuslesen()
    Dim Ordner As String
    Dim Datei As String
    Dim Zeile As Integer

    Ordner = "C:\DeinPfad\"
    Datei = Dir(Ordner & "*.*")
    Zeile = 1

    Do While Datei <> ""
        Cells(Zeile, 1).Value = Datei
        Zeile = Zeile + 1
        Datei = Dir
    Loop
End Sub

Praktische Beispiele

Hier sind einige Anwendungsbeispiele, wie du die Excel VBA Ordnerstruktur auslesen kannst:

  1. Ordner und Unterordner: Mit dem oben angegebenen Code kannst du alle Unterordner und ihre Größen in einem bestimmten Verzeichnis auflisten.
  2. Daten in einer Datei speichern: Du kannst die Ausgabe auch in eine Textdatei speichern, indem du die FileSystemObject-Methode anwendest.

Tipps für Profis

  • Verwendung von Funktionen: Erstelle eigene Funktionen, um spezifische Daten wie Dateigröße oder Erstellungsdatum abzurufen.
  • Fehlerbehandlung: Implementiere On Error GoTo zur besseren Fehlerbehandlung.
  • Dynamische Pfade: Lasse den Benutzer einen Ordner auswählen, indem du Application.FileDialog verwendest.

FAQ: Häufige Fragen

1. Kann ich auch Netzlaufwerke auslesen?
Ja, du kannst auch Netzlaufwerke auslesen, solange du die richtigen Berechtigungen hast und den richtigen Pfad angibst.

2. Wie kann ich die Größe in MB oder GB anzeigen?
Um die Größe in MB oder GB anzuzeigen, teile die Byte-Größe durch 1024 (für MB) oder durch 1048576 (für GB).

3. Was mache ich, wenn der Code nicht funktioniert?
Überprüfe die Pfadangaben und stelle sicher, dass die Microsoft Scripting Runtime in den Verweisen aktiviert ist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige