Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: ganzer PC auf Datei suchen

ganzer PC auf Datei suchen
10.07.2020 13:18:19
Eberhard
Guten Tag
Vielleicht finde ich auf diesem Weg eine Lösung die Funktioniert! Mein PC arbeitet mit 64 Bit. Nun möchte ich über ein Eingabefeld (Textfeld) einen Datei Name eingeben. Anschließend soll der der ganze PC sowie alle vorhandene Laufwerke durchsucht werden. Wurde die Datei gefunden, sollte der Pfad wo sich die Datei befindet in einer msgBox anzeigen.
Vielleicht hat mir da jemand eine Lösung für 64 Bit. Vielen Dank. Gruss Daniel
Anzeige

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
ganzer PC auf Datei suchen
10.07.2020 13:33:31
EtoPHG
Hallo Eberhard,
Was hat das mit 64Bit zu tun? Nichts!
Was sind vorhandene Laufwerke? In nicht vorhandenen kann ja wohl schwerlich suchen!
Sollen nur lokale Laufwerke durchsucht werden? Auch ggf. USB Sticks/Laufwerke?
Was ist für Dich ein Datei Name? Gehört dazu auch der Dateityp? Muss der Name genau mit dem eingegebenen Begriff übereinstimmen, oder nur mit einem Teil des Dateinamens?
Mithilfe der Recherche wirst du in diesem Forum sicher fündig!
Gruess Hansueli
Anzeige
AW: ganzer PC auf Datei suchen
10.07.2020 15:44:55
Eberhard
Hallo Hansueli
Die Frage mit den Bit kann ich auch nicht beantworten. Bei den Beispielen welche ich gefunden haben, erscheint immer eine Fehlermeldung.
Vorhandene Laufwerke sind für mich zum Beispiel Laufwerk C:\Festplatte, Laufwerk D:\Festplatte Nr. 1, Laufwerk H:\USB Stick, usw. Ein Dateiname ist für mich zum Beispiel "Lagerort" (ohne Dateityp). Gross & Kleinschreibung sollte ignoriert werden. Cool wäre es, wenn es die Datei Lagerort auch findet, wenn ich zum Beispiel Lager*.* eingebe. Hoffe die Angaben helfen weiter! Gruss Daniel
Anzeige
Und warum nicht mit dem Explorer? wozu Excel? owT
10.07.2020 16:19:31
EtoPHG

AW: ganzer PC auf Datei suchen
10.07.2020 16:24:22
Daniel
Hi
hier mal ein Beispielcode, der alle Laufwerke, die über einen einzelnen Laufwerksbuchstaben ansprechbar sind, und alle Verzeichnisse durchsucht.
Das ist jetzt aber nicht das schnellste und könnte etwas dauern.
im Select Case-Teil kannst du bestimmte Verzeichnisse von der Suche ausnehmen (z.B. das Windows-Verzeichnis mit sehr vielen Dateien), wenn dort der Suchbegriff nicht vorkommen kann.
Sub test()
Dim Suchbegriff As String
Suchbegriff = "180"
Dim L As Long
Dim LW As String
Dim Verzeichnisse
Dim V As Long
Dim Erg As String
Dim Dat As String
Dim Datei As String
Suchbegriff = "*" & LCase(Suchbegriff) & "*"
For L = Asc("C") To Asc("Z")
LW = Chr(L) & ":\"
If Dir(LW & "*", vbDirectory)  "" Then
ReDim Verzeichnisse(0) As String
Verzeichnisse(0) = LW
V = 0
Do Until V > UBound(Verzeichnisse)
Dat = Dir(Verzeichnisse(V) & "*", vbDirectory)
Do Until Dat = ""
If Left(Dat, 1)  "." Then
Datei = Verzeichnisse(V) & Dat
If (GetAttr(Datei) And vbDirectory) = vbDirectory Then
ReDim Preserve Verzeichnisse(UBound(Verzeichnisse) + 1)
Select Case Dat
Case "Windows" 'systemverzeichnisse nicht durchsuchen
Case Else
Verzeichnisse(UBound(Verzeichnisse)) = Datei & "\"
End Select
Else
If LCase(Dat) Like Suchbegriff Then
If InStr(Erg & vbLf, vbLf & Verzeichnisse(V) & vbLf) = 0 Then
Erg = Erg & vbLf & Verzeichnisse(V)
End If
End If
End If
End If
Dat = Dir()
Loop
V = V + 1
Loop
End If
Next
MsgBox Suchbegriff & " gefunden in:" & Erg
End Sub
und wie gesagt ist nicht das schnellste.
Probleme könnte es ggf noch bei geschützten Verzeichnissen geben.
das habe ich noch nicht ausgetestet.
Gruß Daniel
Anzeige
AW: ganzer PC auf Datei suchen
10.07.2020 16:43:46
Eberhard
Hallo Daniel
Habe es mal bei mir versucht. Da kommt ein Laufzeitfehler '52' Dateiname oder Nummer Falsch.
Und zwar bei der Zeile (siehe unten)!
Dat = Dir(Verzeichnisse(V) & "*", vbDirectory)
Gruss Daniel
AW: ganzer PC auf Datei suchen
10.07.2020 16:50:16
Daniel
Welches Verzeichnis wird denn grad durchsucht, dh welchen Wert haben V und Verzeichnisse(V)?
Hast du Zugriffsrechte auf das Verzeichnis?
Stell den Ordnernamen beim Select Case ein so dass er nicht durchsucht wird, läuft der Code dann weiter?
Gruß Daniel
Anzeige
AW: ganzer PC auf Datei suchen
10.07.2020 17:05:42
Daniel
oder so, damit werden Verzeichnisse die einen Fehler erzeugen, übersprungen:
Sub test()
Dim Suchbegriff As String
Suchbegriff = "lager"
Dim L As Long
Dim LW As String
Dim Verzeichnisse
Dim V As Long
Dim Erg As String
Dim Dat As String
Dim Datei As String
Dim Err2 As Long
Suchbegriff = "*" & LCase(Suchbegriff) & "*"
For L = Asc("C") To Asc("Z")
LW = Chr(L) & ":\"
If Dir(LW & "*", vbDirectory)  "" Then
ReDim Verzeichnisse(0) As String
Verzeichnisse(0) = LW
V = 0
Do Until V > UBound(Verzeichnisse)
Err = 0
On Error Resume Next
Dat = Dir(Verzeichnisse(V) & "*", vbDirectory)
Err2 = Err
On Error GoTo 0
If Err2 = 0 Then
Do Until Dat = ""
If Left(Dat, 1)  "." Then
Datei = Verzeichnisse(V) & Dat
If (GetAttr(Datei) And vbDirectory) = vbDirectory Then
ReDim Preserve Verzeichnisse(UBound(Verzeichnisse) + 1)
Select Case Dat
Case "Windows" 'systemverzeichnisse nicht durchsuchen
Case Else
Verzeichnisse(UBound(Verzeichnisse)) = Datei & "\"
End Select
Else
If LCase(Dat) Like Suchbegriff Then
If InStr(Erg & vbLf, vbLf & Verzeichnisse(V) & vbLf) = 0 Then
Erg = Erg & vbLf & Verzeichnisse(V)
End If
End If
End If
End If
Dat = Dir()
Loop
End If
V = V + 1
Loop
End If
Next
MsgBox Suchbegriff & " gefunden in:" & Erg
End Sub
Gruß Daniel
Anzeige
AW: ganzer PC auf Datei suchen
10.07.2020 17:51:13
Eberhard
Hallo Daniel
Der Laufzeitfehler '52' Dateiname oder-nummer falsch kommt leider bei der Zeile
If (GetAttr(Datei) And vbDirectory) = vbDirectory Then

immer noch! :-(
Gruss Daniel
AW: ganzer PC auf Datei suchen
10.07.2020 16:48:05
volti
Hallo Eberhard,
hier noch eine Variante.
Hier kannst Du Laufwerke oder Verzeichnisse in einer Variablen festlegen. Alles komplett zu durchsuchen, dauert schon sehr lange. Je nachdem, was Du eigentlich machen möchtest, ist eine gezielte Einschränkung vielleicht auch nicht schlecht:
PS: Wenn die Pfadvorgabe leer bleibt, kannst Du einen Pfad aussuchen...
[+][-]
Option Explicit Option Compare Text Dim gsPathFilename As String Sub FileSearch() Dim sFilename As String, sPath As String, sArr() As String Dim i As Integer sPath = "C:&bsol;Users&bsol;voltm&bsol;Desktop,D:&bsol;Pictures" 'Gewünschte Laufwerke, Pfade oder leer lassen If sPath <> "" Then sArr = Split(sPath, ",") 'Datei incl. Pfad oder Datei und anschließend Start-Pfad abfragen sFilename = InputBox("Bitte den Dateinamen eingeben!", "Datei suchen und öffnen", sFilename) If StrPtr(sFilename) = 0 Then Exit Sub 'Abbruch gewählt If sFilename = "" Then Exit Sub 'Nix eingegeben gsPathFilename = "" If Not sFilename Like "*:*&bsol;*" And sPath = "" Then 'Kein vollständiger Dateipfad With Application.FileDialog(msoFileDialogFolderPicker) If .Show <> 0 Then gsPathFilename = "" 'Globalen Dateinamen leeren GetFile .SelectedItems(1), sFilename End If End With Else For i = 0 To UBound(sArr) GetFile sArr(i), sFilename If gsPathFilename <> "" Then Exit For Next i End If If gsPathFilename = "" Then MsgBox "Es konnte keine entsprechende Datei gefunden werden!", vbCritical, "Dateisuche" Else MsgBox "Datei gefunden in" & vbLf & gsPathFilename, vbCritical, "Dateisuche" End If End Sub Sub GetFile(sPathname As String, sSearchFile As String) Dim oFile As Object, oDir As Object If gsPathFilename <> "" Then Exit Sub 'Suchbegriff gefunden=>raus On Error Resume Next With CreateObject("scripting.filesystemobject").GetFolder(sPathname) 'Ordner durchsuchen For Each oFile In .Files If Err = 0 Then If oFile.Name Like sSearchFile & "*" Then gsPathFilename = sPathname & "&bsol;" & oFile.Name Exit Sub End If End If Next 'Unterordner durchsuchen For Each oDir In .Subfolders GetFile sPathname & "&bsol;" & oDir.Name, sSearchFile Next End With End Sub
viele Grüße aus Freigericht
Karl-Heinz

Anzeige
AW: ganzer PC auf Datei suchen
10.07.2020 16:55:59
Nepumuk
Hallo Eberhard,
damit durchsuchst du den kompletten Rechner:
Option Explicit

Private Declare PtrSafe Function SearchTreeForFile Lib "imagehlp.dll" ( _
    ByVal RootPath As String, _
    ByVal InputPathName As String, _
    ByVal InputPathBuffer As String) As Long

Private Const MAX_PATH As Long = 260&

Private Function FindFile(ByVal pvstrFilename As String) As String
    
    Dim objFileSystemObject As Object
    Dim objDrives As Object, objDrive As Object
    Dim lngRetun As Long
    Dim strInputPathBuffer As String * MAX_PATH
    
    pvstrFilename = "*" & pvstrFilename & "*"
    
    Set objFileSystemObject = CreateObject(Class:="Scripting.FileSystemObject")
    
    Set objDrives = objFileSystemObject.Drives
    
    For Each objDrive In objDrives
        
        If objDrive.IsReady Then
            
            lngRetun = SearchTreeForFile(objDrive.Path, pvstrFilename, strInputPathBuffer)
            
            If lngRetun = 1 Then
                
                FindFile = Left$(strInputPathBuffer, InStr(strInputPathBuffer, vbNullChar) - 1)
                
                Exit For
                
            End If
        End If
    Next
    
    Set objDrive = Nothing
    Set objDrives = Nothing
    Set objFileSystemObject = Nothing
    
End Function

Public Sub test()
    Dim strFilename As String, strReturn As String
    strFilename = "array"
    strReturn = FindFile(strFilename)
    If strReturn = vbNullString Then
        Call MsgBox("Datei ''" & strFilename & "'' nicht gefunden.", vbExclamation, "Hinweis")
    Else
        Call MsgBox(strReturn, vbInformation, "Information")
    End If
End Sub

Gruß
Nepumuk
Anzeige
AW: ganzer PC auf Datei suchen
11.07.2020 17:22:28
Eberhard
Hallo Nepumuk
Danke für Dein Vorschlag. Dies funktioniert! Doch gibt es mehrere Dateien mit dem selben Namen. Schön wäre es, wenn es mir eine Auflistung sämtlicher Dateien anzeigen würde! Wäre das noch möglich? Gruss Daniel
AW: Raider in disguise ? (owT)
11.07.2020 17:45:34
EtoPHG

AW: ganzer PC auf Datei suchen
12.07.2020 12:01:37
Eberhard
Hallo Nepumuk
Hey Super! Genau das was ich gesucht habe! Vielen, vielen Dank & einen schönen Sonntag. Gruss Daniel
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

PC durchsuchen: So findest Du Dateien mit Excel VBA


Schritt-für-Schritt-Anleitung

Um eine Excel-Datei auf Deinem PC zu suchen, kannst Du VBA (Visual Basic for Applications) verwenden. Hier ein einfaches Beispiel, um alle Laufwerke zu durchsuchen:

  1. Öffne Excel und drücke Alt + F11, um den VBA-Editor zu starten.

  2. Klicke auf Einfügen und wähle Modul, um ein neues Modul zu erstellen.

  3. Füge den folgenden Code ein:

    Sub DateiSuchen()
       Dim Suchbegriff As String
       Suchbegriff = InputBox("Bitte den Dateinamen eingeben:")
       Dim L As Long
       Dim LW As String
       Dim Verzeichnisse
       Dim V As Long
       Dim Erg As String
       Dim Dat As String
       Suchbegriff = "*" & LCase(Suchbegriff) & "*"
    
       For L = Asc("C") To Asc("Z")
           LW = Chr(L) & ":\"
           If Dir(LW & "*", vbDirectory) <> "" Then
               ReDim Verzeichnisse(0) As String
               Verzeichnisse(0) = LW
               V = 0
               Do Until V > UBound(Verzeichnisse)
                   Dat = Dir(Verzeichnisse(V) & "*", vbDirectory)
                   Do Until Dat = ""
                       If Left(Dat, 1) <> "." Then
                           If LCase(Dat) Like Suchbegriff Then
                               Erg = Erg & vbLf & Verzeichnisse(V) & Dat
                           End If
                       End If
                       Dat = Dir()
                   Loop
                   V = V + 1
               Loop
           End If
       Next
       MsgBox Suchbegriff & " gefunden in:" & Erg
    End Sub
  4. Schließe den VBA-Editor und gehe zurück zu Excel.

  5. Führe das Makro über Alt + F8 aus und wähle DateiSuchen aus.

Die Suche wird durch alle lokalen Laufwerke durchgeführt, und Du erhältst eine Meldung mit den gefundenen Dateien.


Häufige Fehler und Lösungen

  • Laufzeitfehler '52': Dateiname oder Nummer falsch.

    • Überprüfe die Zeile, die den Fehler auslöst. Stelle sicher, dass die Verzeichnisse existieren und Du Zugriffsrechte hast.
  • Keine Ergebnisse bei der Suche.

    • Achte darauf, dass Du den Dateinamen korrekt eingibst. Du kannst Platzhalter wie * verwenden, um die Suche zu erweitern.

Alternative Methoden

Wenn Du nicht nur Excel verwenden möchtest, kannst Du auch die Windows-Suchfunktion nutzen:

  1. Öffne den Windows Explorer.
  2. Klicke in die Suchleiste und gib den Dateinamen oder einen Teil davon ein, z.B. lager*.*.
  3. Windows durchsucht automatisch alle Laufwerke und Verzeichnisse.

Praktische Beispiele

Hier sind einige nützliche VBA-Skripte:

  1. Alle Excel-Dateien auf PC anzeigen:

    Sub AlleExcelDateienSuchen()
       Dim Suchbegriff As String
       Suchbegriff = "*.xls*"
       ' Rest des Codes ähnlich wie oben
    End Sub
  2. Suchbereich einschränken:

    • Du kannst die Variable LW auf spezifische Laufwerke beschränken, z.B. nur C:\.

Tipps für Profis

  • Verwende On Error Resume Next, um Fehler zu ignorieren (z.B. bei geschützten Verzeichnissen).
  • Optimiere den Code, indem Du nur bestimmte Verzeichnisse suchst, um die Leistung zu erhöhen.

FAQ: Häufige Fragen

1. Wie finde ich eine Datei auf meinem PC? Du kannst Excel VBA verwenden, um alle Laufwerke zu durchsuchen. Alternativ kannst Du die Windows-Suchfunktion nutzen.

2. Was muss ich tun, wenn kein Ergebnis angezeigt wird? Überprüfe den eingegebenen Dateinamen. Stelle sicher, dass die Datei tatsächlich existiert und Du die richtigen Berechtigungen hast.

3. Kann ich auch USB-Sticks durchsuchen? Ja, alle angeschlossenen Laufwerke (lokal und extern) werden durchsucht, solange sie im Code berücksichtigt sind.

4. Wie kann ich den Suchbereich anpassen? Ändere die Variable LW, um nur bestimmte Laufwerke oder Verzeichnisse zu durchsuchen.

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