Das Clever-Excel-Forum.de - Treffen
findet vom 15. - 17. September 2017 in Thüringen / Region Großer Inselsberg statt. Hotelbuchung ab sofort möglich.


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
?mage
to 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-2016)
to top


Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Daten aus anderer Excel Datei selektiert in neue Datei übernehmen Casual 5 69 08.12.2016, 15:35
Letzter Beitrag: Casual
  Excel Datei exportieren zu einer XML Datei FaDos 4 285 15.09.2016, 15:56
Letzter Beitrag: FaDos
  Einen Rechner für ein Transportunternehmen tdisk 16 775 13.06.2016, 12:05
Letzter Beitrag: tdisk
  Neue Excel Datei in 2. Arbeitsmappse / Datei öffnen trance-master 3 871 17.10.2015, 22:03
Letzter Beitrag: Käpt'n Blaubär
  Probleme mit Km-Rechner Iceman1411 46 5.267 26.08.2015, 15:00
Letzter Beitrag: Jockel
  Eigenes Add-In (.xlam) auf anderem Rechner KeineAhnung 4 1.139 29.06.2015, 10:54
Letzter Beitrag: KeineAhnung
  Excel Datei exportieren nach eine XML Datei FaDos 16 2.851 26.06.2015, 14:26
Letzter Beitrag: FaDos
  Excel Rechner für Arbeitslöhne Daniel Albert 12 3.076 18.11.2014, 21:17
Letzter Beitrag: Daniel Albert

Gehe zu:


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