Clever-Excel-Forum

Normale Version: Excel VBA File-Search mit Platzhalter
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

ich bekomme die Aufgabe nicht   Huh  hin und brauche Hilfe:
Ich möchte ab einem besimmten Startverzeichnis (zb "C:\Test\") mit einem bekannten eindeutigen Teil eines Dateinnamens (zb. 12345) nach einer Datei suchen.
Das Script soll also in allen Unterverzeichnissen nach der Datei suchen, die im Namen den angegebenen Teilstring beinhaltet.
Aus der Datei möchte ich dann bestimmte Werte auslesen.

Kann mir jemand helfen?

Danke
Twixt
Hallo twixt,

poste bitte mal Deinen bisherigen Code. Ich nehme an, dass Du nur noch die Sache mit dem * benötigst?
Hallo,

sieh dir einmal


Code:
Private Declare Function SearchTreeForFile Lib "imagehlp.dll" _
   (ByVal RootPath As String, _
   ByVal InputPathName As String, _
   ByVal OutputPathBuffer As String) As Long


an. Falls du zumindest etwas mit API's vertraut bist, wäre dass die Lösung.

Andernfalls geht auch mit cmd: dir /s c:\user\*.xlsx

und dann im Array nach der Datei suchen.

mfg
Hallo,
habe inzwischen eine Lösung zu meinem Problem erarbeitet. Ist gar nicht so schwer, dachte mir aber, vielleicht kann es auch jemand anderes gebrauchen.
Die beiden Prozeduren funktionieren folgendermaßen:

Die erste Prozedur (DateiSuche) erwartet einen Dateinamen oder nur einen eindeutigen Teil eines Dateinamens. Diese Prozedur ruft dann die Prozedur GetFiles auf, die die eigentliche Suche und den Dateinamensvergleich durchführt. Es wird - ausgehend vom Startverzeichnis (hier c:\test) alle Verzeichnisse, auch die darunterliegenden durchsucht, bis eine erste Übereinstimmung gefunden wird. Wenn die Datei nicht gefunden wird, dann gibt eine Messagebox den entsprechenden Text aus.

In den Prozeduren unten passiert scheinbar nichts, wenn die Datei gefunden wird; das liegt aber nur daran, dass ich hier nicht den gesamten Programmtext veröffentliche.

Sub GetFiles(ByVal strDirectory, SuchStringEingabe)

      Set objFolder = objFSO.GetFolder(strDirectory)
      For Each objFile In objFolder.Files
            ausgelesenerDateiname = LCase(objFile)
            If InStr(ausgelesenerDateiname, SuchStringEingabe) And (SuchStringEingabe <> "") Then
               Dateiname = LCase(objFile.Name)
               GefundenerOrdner = objFolder
               gefunden_ja_nein = "ja"
               Exit Sub
            End If
        Next
        For Each objFolder In objFolder.SubFolders
            GetFiles objFolder.path, SuchStringEingabe
        Next
End Sub




Sub DateiSuche(SuchStringEingabe As String)
     gefunden_ja_nein = "nein"
     Set objFSO = CreateObject("Scripting.FileSystemObject")
     GetFiles "c:\test", SuchStringEingabe
     If gefunden_ja_nein = "nein" Then
      MsgBox ("Eine Datei mit dem Teilstring " & SuchStringEingabe & " wurde nicht gefunden!")
    End If
End Sub
 
Vielleicht gibt es auch Vorschläge, das ganze besser zu machen. Die Aufteilung in zwei Prozeduren muß ich haben (wie gesagt, hier ist ja nicht alles veröffentlicht) und es war wichtig, dass man auch mit einem Teilstring die gesuchte Datei findet. Als letztes war auch klar, dass es bei mir immer nur genau ein Suchergebnis geben kann.

Gruß
Twixt