Den Pfad C: nach Dateien xlsm durchsuchen

josef24

Erfahrenes Mitglied
Hallo zusammen. Ich suche verzweifelt nach einer Datei auf dem Computer und habe einen VBA Code gefunden, der mir Dateien auf einem Laufwerk (Intenso) anzeigt.
Wenn ich nun auf das Laufwerk C:\ wechsele, kommt gleich die Meldung aus dem Code MsgBox. Was ist ausschlaggebend dafür, dass es einmal funktioniert oder bei dem anderen Laufwerk eben nicht?
Das Laufwerk C wird somit nicht durchsucht. Frage: Kann man den Code hier überhaupt anwenden, oder wie müsste er verändert werden?
Danke für erklärende Codetexte. Gruß Josef

Visual Basic:
Private Sub CommandButton1_Click()
    Dim sPath As String

    ' Startpfad angeben (hier z.B. Laufwerk C:)
    sPath = "C:\"
    ' Durchsuche das Verzeichnis und alle Unterordner nach Excel-Dateien
    On Error Resume Next
    RecursiveSearchForExcel sPath
    On Error GoTo 0

    ' Meldung am Ende der Suche
    MsgBox "Die Suche nach Excel-Dateien wurde abgeschlossen.", vbInformation
End Sub

Sub RecursiveSearchForExcel(ByVal sFolderPath As String)
    Dim oFSO As Object
    Dim oFolder As Object
    Dim oSubFolder As Object
    Dim oFile As Object
    Dim wb As Workbook
    Dim sFile As String

    ' Erstelle ein FileSystemObject
    Set oFSO = CreateObject("Scripting.FileSystemObject")

    ' Überprüfe, ob der Ordner existiert
    If oFSO.FolderExists(sFolderPath) Then
        ' Öffne den Ordner
        Set oFolder = oFSO.GetFolder(sFolderPath)

        ' Durchsuche alle Dateien im aktuellen Ordner
        For Each oFile In oFolder.Files
            ' Prüfe, ob es sich um eine Excel-Datei handelt
            If InStr(1, oFile.Name, ".xlsx", vbTextCompare) > 0 Or InStr(1, oFile.Name, ".xlsm", vbTextCompare) > 0 Then
                ' Öffne die Excel-Datei
                Set wb = Workbooks.Open(oFile.Path)
                ' Hier können weitere Aktionen mit der geöffneten Datei durchgeführt werden
                ' Zum Beispiel: MsgBox "Geöffnete Datei: " & wb.Name
                ' Schließe die Datei nach Bedarf
                ' wb.Close SaveChanges:=False
            End If
        Next oFile

        ' Durchsuche alle Unterordner rekursiv
        For Each oSubFolder In oFolder.SubFolders
            RecursiveSearchForExcel oSubFolder.Path
        Next oSubFolder
    End If
End Sub
 
Grundsätzlich. Zeile 36 bis 40 solltest du anschauen. Der Code öffnet jedes Excelfile das er findet und lässt sie offen. Also alle Excelfiles auf C werden geöffnet, wenn der Code funktieren würde. Viel Spass damit.

Ganz ehrlich, schrotte den Code. Der Zeigt keine Dateien an, der öffnet sie alle!

Was suchst du denn auf C. Nach einem Dateiinhalt?
 
Hallo, der Code funktioniert insoweit, als dass er Dateien öffnet, wenn ich z. B. Laufwerk F: auswähle. Gut, es sind im Laufwerk F: nicht so viele Dateien, aber warum läuft der Code nicht durch, wenn ich Laufwerk C: auswähle. Das verstehe ich nicht. Brauch es mehr Zeit, bis ein Ergebnis vorliegen könnte? Es kommt gleich die Nachricht "Vorgang ist abgeschlossen" was bei F: wirklich erst nach der letzten Datei erst erscheint.
 
Schonmal geprüft ob du in einen Fehler reinläufst.
Könnte mir vorstellen, ev. fehlende Berechtigung für ein Ordner (wenn du C rekursiv durchläufst kommst du ja z.B. auch an die einzelnen benutzerordner vorbei)

(Fehlerbehandlung ist durch On Error GoTo 0 ja deaktiviert, laut Dokumentation)
 
Schonmal geprüft ob du in einen Fehler reinläufst.
Könnte mir vorstellen, ev. fehlende Berechtigung für ein Ordner (wenn du C rekursiv durchläufst kommst du ja z.B. auch an die einzelnen benutzerordner vorbei)

(Fehlerbehandlung ist durch On Error GoTo 0 ja deaktiviert, laut Dokumentation)
Anderst rum: On Error Resume Next schaltet die fehlerbehandlung aus und Goto 0 schaltet sie ein.
aber korrekt: zeile 7 auskommentieren. Dann sieht man wo es knallt

wobei meine Vermutung auch bei Zugriffsrechten ist. Denkt nur an SystemVolumeInformation oder wie der Ordner heisst

grüsse aus Portugal
 

Neue Beiträge

Zurück