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.

Beliebige Datei auf Rechner finden
#1
Hallo liebe Excel Profis,
wie kann ich per VBA Programmierung eine beliebige Datei auf dem Laufwerk C finden?
Mein bisherige Code funktioniert leider nicht.

Code:
Option Explicit

Private Declare PtrSafe 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
    
     ' Datei, nach der gesucht werden soll
    
     sFile = "Suchdatei.pdf"
    
     ' 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


Code durch Einrücken strukturiert und strukturiert dargestellt durch 3. Button von rechts im Beitragsformular: #
Moderator
[Bild: smilie.php?smile_ID=1810]
Antworten Top
#2
Hallo Sonja,

der funktioniert z.B.

Code:
Option Explicit

#If Win64 Then
  Private Declare PtrSafe Function SearchTreeForFile Lib "imagehlp.dll" _
    (ByVal RootPath As String, ByVal InputPathName As String, _
     ByVal OutputPathBuffer As String) As Long
#Else
  Private Declare Function SearchTreeForFile Lib "imagehlp.dll" _
    (ByVal RootPath As String, ByVal InputPathName As String, _
     ByVal OutputPathBuffer As String) As Long
#End If

Sub FindFile()
'Variablendeklarationen
'String
Dim strFile As String * 1024, strFindFile As String
'wenn API etwas zurückgibt, dann
If SearchTreeForFile("D:\", "*Schember*", strFile) Then
   'FullName der Datei zurueckgeben
   strFindFile = Left$(strFile, InStr(strFile, vbNullChar) - 1)
'wenn API nichts zurückgibt, dann
Else
   'leeren String zurueckgeben
   strFindFile = ""
'Ende wenn API etwas zurückgibt, dann
End If
'Meldung ausgeben
MsgBox strFindFile
End Sub

Wenn Deine Datei öfters vorhanden ist, wären die API FindFirst, FindNext usw. brauchbar.
*schember* musst Du mit deinem Dateinamen ersetzen.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top


Gehe zu:


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