2016-11-04 6 views
0

Ich bekomme diesen Fehler, "Microsoft Excel wartet auf eine andere Anwendung eine OLE-Aktion abzuschließen" beim Versuch, eine PDF-String-Suche zu automatisieren und Ergebnisse in Excel aufzuzeichnen. Bei bestimmten PDFs wird dieser Fehler nicht angezeigt. Ich nehme an, dies liegt an den weniger optimierten PDFs, die eine längere Zeit benötigen, um eine Zeichenkette zu suchen, während Seite für Seite indexiert wird.Automatisierung von PDF String Suche mit Excel VBA - OLE-Fehler

Um genauer zu sein, habe ich eine Arbeitsmappe mit zwei Blättern. Einer enthält eine Liste von PDF-Dateinamen und der andere eine Liste von Wörtern, die ich durchsuchen möchte. Aus der Dateiliste würde das Makro jede PDF-Datei öffnen und jedes Wort aus der Liste der Wörter nehmen und eine Zeichenkettensuche durchführen. Wenn es gefunden wird, würde es jeden Fund in einem neuen Blatt in derselben Arbeitsmappe mit dem Dateinamen und der gefundenen Zeichenfolge aufzeichnen.

Unten ist der Code, mit dem ich kämpfe. Jede Hilfe ist willkommen.

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

Bitte geben Sie Ihren Code im richtigen Format ein. –

+0

Sorry, dass ... Ich bin neu auf dieser Seite. Kämpfte mit dem HTML –

Antwort

0

Ich habe gefunden, nun die Antwort auf dieses Problem.

Ich benutze Acrobat Pro und jedes Mal, wenn ich eine PDF-Datei öffne, öffnet es mit eingeschränkten Funktionen aufgrund Protected View Einstellungen. Wenn ich diese Funktion deaktiviere oder auf Alle Funktionen aktivieren und Änderungen an den PDF-Dateien speichere, läuft der VBA-Makro reibungslos.

Es ist lustig, ich poste eine Antwort auf mein eigenes Problem.