Registriert seit: 01.02.2017
Version(en): 13
Hallo,
ich bekomme die Aufgabe nicht

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
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
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)
Registriert seit: 06.12.2015
Version(en): 2016
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
Registriert seit: 01.02.2017
Version(en): 13
25.10.2017, 11:44
(Dieser Beitrag wurde zuletzt bearbeitet: 25.10.2017, 11:44 von Statler.)
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