Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Excel VBA File-Search mit Platzhalter
#1
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
Antworten Top
#2
Hallo twixt,

poste bitte mal Deinen bisherigen Code. Ich nehme an, dass Du nur noch die Sache mit dem * benötigst?
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#3
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
Antworten Top
#4
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
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste