2016-11-04 42 views
0

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 
+0

コードを正しい形式で投稿してください。 –

+0

申し訳ありませんが...私はこのサイトの新しいquireです。 htmlで苦労していた –

答えて

0

これで、この問題の答えが見つかりました。

Acrobat Proを使用していて、PDFファイルを開くたびに、プロテクトビューの設定によって機能が制限されています。この機能を無効にするか、すべての機能を有効にしてをクリックし、変更をPDFファイルに保存すると、VBAマクロはスムーズに実行されます。

面白いですが、私自身の問題に対する答えを投稿しています。

関連する問題