PDF文字列の検索を自動化し、結果をExcelで記録しようとすると、「Microsoft Excelは別のアプリケーションがOLEアクションを完了するのを待っています。特定のPDFでは、このエラーはポップしません。これは、あまり最適化されていないPDFがページ単位でインデックスを作成している間に検索文字列に長時間を費やしているためだと考えています。Excel VBAを使用したPDF文字列検索の自動化 - OLEエラー
より正確には、私は2枚のシートを含むワークブックを持っています。 1つはPDFファイル名のリストを含み、もう1つは検索したい単語のリストを持っています。ファイルリストからマクロは各PDFファイルを開き、単語のリストから各単語を取り出して文字列検索を実行します。見つかった場合は、ファイル名と見つかった文字列を含む同じブックの新しいシートに各検索結果を記録します。
以下は私が苦労しているコードです。どんな助けも歓迎です。
Public Sub SearchWords()
'variables
Dim ps As Range
Dim fs As Range
Dim PList As Range
Dim FList As Range
Dim PLRow As Long
Dim FLRow As Long
Dim Tracker As Worksheet
Dim gapp As Object
Dim gAvDoc As Object
Dim gPDFPath As String
Dim sText As String 'String to search for
FLRow = ActiveWorkbook.Sheets("List Files").Range("B1").End(xlDown).Row
PLRow = ActiveWorkbook.Sheets("Prohibited Words").Range("A1").End(xlDown).Row
Set PList = ActiveWorkbook.Sheets("Prohibited Words").Range("A2:A" & PLRow)
Set FList = ActiveWorkbook.Sheets("List Files").Range("B2:B" & FLRow)
Set Tracker = ActiveWorkbook.Sheets("Tracker")
'For each PDF file list in Excel Range
For Each fs In FList
'Initialize Acrobat by creating App object
Set gapp = CreateObject("AcroExch.App")
'Set AVDoc object
Set gAvDoc = CreateObject("AcroExch.AVDoc")
'Set PDF file path to open in PDF
gPDFPath = fs.Cells.Value
' open the PDF
If gAvDoc.Open(gPDFPath, "") = True Then
'Bring the PDF to front
gAvDoc.BringToFront
'For each word list in the range
For Each ps In PList
'Assign String to search
sText = ps.Cells.Value
'This is where the error is appearing
If gAvDoc.FindText(sText, False, True, False) = True Then
'Record findings
Tracker.Range("A1").End(xlDown).Offset(1, 0) = fs.Cells.Offset(0, -1).Value
Tracker.Range("B1").End(xlDown).Offset(1, 0) = ps.Cells.Value
End If
Next
End If
'Message to display once the search is over for a particular PDF
MsgBox (fs.Cells.Offset(0, -1).Value & " assignment complete")
Next
gAvDoc.Close True
gapp.Exit
set gAVDoc = Nothing
set gapp = Nothing
End Sub
コードを正しい形式で投稿してください。 –
申し訳ありませんが...私はこのサイトの新しいquireです。 htmlで苦労していた –