Datei suchen und Pfad anzeigen

Hallo zusammen,

gibt es eine Möglichkeit in Excel-VBA per Makro eine Datei, deren Namen ich eingebe zu suchen und wenn sie vorhanden ist den entsprechenden Pfad der DAtei anzuzeigen?

Danke SAlvo

Moien!

Soweit ich weiss nur per API…siehe folgenden Code…

Bernd

'***************************************************************
'*Erstelllt: 10.10.2003
'*Autor: BWIN
'*Historie
'*Datum Autor Grund
'***************************************************************

Option Explicit
Private Declare Function SearchTreeForFile Lib „imagehlp.dll“ ( _
ByVal RootPath As String, ByVal InputPathName As String, _
ByVal OutputPathBuffer As String) As Long

Const MaX_PaTH = 160

'***************************************************************
'*Erstelllt: 23.10.2003
'*Autor: BWIN
'*Historie
'*Datum Autor Grund
'***************************************************************

’ rekursive Dateisuche
Public Function FileFind(ByRef hFileName As String, Optional ByVal _
hPart As String = „C:“) As String
On Error GoTo errorHandling
Dim rapi As Long
Dim hPfad As String

On Error GoTo Fehler

’ keine Datei übergeben
If Len(Trim$(hFileName)) = 0 Then Err.Raise 75

’ ZielPfad vorbereiten
hPfad = String(MaX_PaTH, 0)

’ aPI-aufruf
rapi = SearchTreeForFile(hPart, hFileName, hPfad)

’ gefunden ?
If rapi = 0 Then Err.Raise 76

’ Rückgabewert
FileFind = Left(hPfad, InStr(hPfad, Chr(0)) - 1)

Exit Function
Fehler:

Err.Clear
FileFind = „“
out:
Exit Function
errorHandling:
FehlerProtokoll „Modul: modFindFile sub: FileFind“, Err.Description, Err.Number, "Datenbankpfad : " & pathaccessDB
Resume out:
End Function

hallo salvo,

du kannst den verzeichnisbaum auch durchsuchen ohne dir
z.b. „fso“ einzubinden bzw. einen api-call abzusetzen.

dies machst du ebenfalls duch eine rekursive prozedur, die dir alle dateien und verzeichnisse ausliest.

ist noch gar nicht so lange her, das dies gefragt wurde – evtl findest du was im archiv

gruß

rasta

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Datei suchen und Pfad anzeigen
Ist zwar inetwa das selbe, aber bisschen anders geschrieben.
Wenn das einte nicht klappt, kannstes ja mit dem Code versuchen.
Der geht bei mir…

Leider hat M$ Word einen kleinen Fehler.
Man muss zuerst den VBA-Editor öffnen, den Code speichern und dann den VBA-Editor wieder schliessen. Ansonsten kommt immer die Meldung „Datei nicht gefunden!“, weil VBA die Variable sBuffer nicht abfragen kann.
Aber frag mich nicht wieso das so ist :smile:

’ API - Deklaration
’ Kommt zuoberst im Code hin !!
Private Declare Function SearchPath Lib „kernel32“ _
Alias „SearchPathA“ ( _
ByVal lpPath As String, _
ByVal lpFileName As String, _
ByVal lpExtension As String, _
ByVal nBufferLength As Long, _
ByVal lpBuffer As String, _
ByVal lpFilePart As String) As Long


Sub Filesearch()

Dim sFile As String
Dim nResult As String
Dim sBuffer As String

’ VB-Editor öffnen, abspeichern & schliessen (Bug)
ShowVisualBasicEditor = True
ThisDocument.Save
ShowVisualBasicEditor = False

’ Datei, nach der gesucht werden soll
sFile = „normal.dot“

’ Buffer für die Rückgabe des Verzeichnisses
Const MAX_PATH = 260
sBuffer = Space$(MAX_PATH)

’ Suchvorgang starten…
nResult = SearchPath(vbNullString, sFile, „“, Len(sBuffer), _
sBuffer, vbNullString)

If nResult > 0 Then
’ Datei gefunden
sBuffer = Left(sBuffer, InStr(sBuffer, „“ & sFile))
MsgBox sBuffer
Else
’ Datei nicht gefunden
MsgBox „Datei nicht gefunden!“
End If
End Sub

Hoffe es hilft dir weiter…

Falls du die Datei gleich noch öffnen willst, kannst du den Befehl:
ChangeFileOpenDirectory sBuffer
verwenden.

Gruss,
Christoph