パズルのピースが少ないと感じているので、これはしばらくの間私を悩ませてきましたが、それらをすべてまとめることはできません
したがって、私の目標は、特定の場所にあるすべての.pdfで、ファイル名ではなくファイルのコンテンツ内のキーワードまたはフレーズを検索し、検索結果を使用してExcelスプレッドシートにデータを入力できるようにすることです。
始める前に、これはAcrobat Pro APIを使用して簡単に実行できることを知っていますが、この1つのマクロが機能するように、私の会社はすべての人にライセンスを支払うつもりはありません。
Windowsファイルエクスプローラー検索は、高度なクエリ構文を受け入れ、正しいifilterが有効になっていることを前提としてファイルのコンテンツ内を検索します。たとえば、doc1.docxというWord文書があり、文書内のテキストが「blahblahblah」と表示されている場合、「blah」を検索すると、結果としてdoc1.docxが表示されます。私の知る限り、これはFileSystemObjectを使用して達成することはできませんが、誰かがどちらかの方法を確認できれば、それは本当に便利でしょうか?
エクスプローラーウィンドウを開き、指定された場所にあるすべてのファイルのコンテンツ内の文字列を検索する簡単なコードがあります。検索が完了すると、必要なすべてのファイルが一覧表示されたエクスプローラーウィンドウが表示されます。このリストを取得して、これらのファイルのファイル名をExcelに入力するにはどうすればよいですか?
dim eSearch As String
eSearch = "explorer " & Chr$(34) & "search-ms://query=System.Generic.String:" & [search term here] & "&crumb=location:" & [Directory Here] & Chr$(34)
Call Shell (eSearch)
場所にインデックスが付けられていると仮定すると、ADOを使用してカタログに直接アクセスできます(Microsoft ActiveX Data Objects 2.xへの参照を追加します)。
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim sql As String
cn.Open "Provider=Search.CollatorDSO;Extended Properties='Application=Windows'"
sql = "SELECT System.ItemNameDisplay, System.ItemPathDisplay FROM SystemIndex WHERE SCOPE='file:C:\look\here' AND System.Kind <> 'folder' AND CONTAINS(System.FileName, '""*.PDF""') AND CONTAINS ('""find this text""')"
rs.Open sql, cn, adOpenForwardOnly, adLockReadOnly
If Not rs.EOF Then
Do While Not rs.EOF
Debug.Print "File: "; rs.Collect(0)
Debug.Print "Path: "; rs.Collect(1)
rs.MoveNext
Loop
End If
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加