Suchen in Dateien / Windows Search mit VBA

Suchen in Dateien / Zugreifen auf den Windows SearchIndex mit VBA

Ich hatte neulich die Anforderung, von einer Access-Anwendung eine Volltextsuche innerhalb von Dateien auf dem Dateisystem durchzuführen.
Also etwa: Liste mir alle Office- und PDF-Dateien unterhalb eines bestimmten Ordners auf, die das Wort „Software“ enthalten.

Erstaunlichrweise musste ich sehr lange suchen, bis ich den einfachsten Weg gefunden habe:

Via ADO und SQL den Index der Windows-Suche abfragen
Sub windows_search()
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim strCNN As String
Dim strSQL As String

  Set cnn = New ADODB.Connection
  Set rst = New ADODB.Recordset
 
 ' Connection String
 strCNN = "Provider=Search.CollatorDSO;Extended Properties='Application=Windows';"
 cnn.Open strCNN
 
 ' SQL String: Volltext-Suche unterhalb eines Ordners nach Dateien, die "software" enthalten
 strSQL = "SELECT System.ItemPathDisplay FROM SYSTEMINDEX WHERE CONTAINS(*,'software') and scope = 'c:\Projekte'"
 
 Set rst = cnn.Execute(strSQL)
 
 While Not rst.EOF
   Debug.Print rst.Fields.Item("System.ItemPathDisplay").Value
   rst.MoveNext
 Wend
 
 rst.Close
 Set rst = Nothing
 
 cnn.Close
 Set cnn = Nothing

End Sub
Erläuterung:

Es werden exakt die gleichen Dateien gefunden, wie wenn im Windows-Explorer der Ordner c:\Projekte ausgewählt wird und im Suchfenster „software“ eingegeben wird.

Vorraussetzung: Ordner muss bei den „Indizierten Orten“ enthalten sein!

Im abgebildeten Such-Ribbon, unter „Erweiterte Optionen“ -> „Indizierte Orte ändern“ muss der zu durchsuchende Ordner aufgeführt sein bzw. hinzugefügt werden.

Unter diesem Menupunkt sind auch die Dateitypen aufgeführt, die bei der Volltext-Suche gefunden bzw. durchsucht werden können.

Der gleiche Dialog kann auch schnell aufgerufen werden, wenn im Windows-Start-Fenster „Indizierungsoptionen“ eingegeben wird.

Weiterführende Links:

Unter diesen Links sind mehr Informationen zu finden, welche Felder angezeigt werden können und welche Filter-Parameter möglich sind:

https://msdn.microsoft.com/en-us/library/windows/desktop/bb266517(v=vs.85).aspx

https://msdn.microsoft.com/en-us/library/windows/desktop/bb760770(v=vs.85).aspx

 

Suchen in Dateien / Windows Search mit VBA

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert