2017-12-29 54 views
0

Kann der Verweis auf die Adobe Acrobat Type Library irgendwie vermieden werden? Ich kann es nicht herausfinden, wie ... Ich erhalte eine ActiveX-Fehlermeldung.(VBA) Late Binding (Avaoid-Referenz) der Acrobat-Typbibliothek

Ich nur einen Auszug aus meinem Code einfügen, da der Rest nicht so wichtig ist. Hier ist der Code mit der frühen Bindung (Set-up-Referenz):

Dim Fol_Path As String 
Dim Each_Page As Boolean 

Dim AC_PD As Acrobat.AcroPDDoc 
Dim AC_Hi As Acrobat.AcroHiliteList 
Dim AC_PG As Acrobat.AcroPDPage 
Dim AC_PGTxt As Acrobat.AcroPDTextSelect 

Dim OS_FSO As Object 
Dim OS_TxtFile As Object 

Set OS_FSO = CreateObject("Scripting.filesystemobject") 

Dim Ct_Page As Long 
Dim i As Long, j As Long, k As Long 
Dim T_Str As String 

Dim Hld_Txt As Variant 

Each_Page = True 

Set AC_PD = New Acrobat.AcroPDDoc 
Set AC_Hi = New Acrobat.AcroHiliteList 
AC_Hi.Add 0, 32767 

... ... ...

 Set AC_PG = .AcquirePage(i - 1) 

     Set AC_PGTxt = AC_PG.CreateWordHilite(AC_Hi) 
+0

Deklarieren Sie 'als Objekt' erzwingt spätes Binden (alias IDispatch). Erstellen Sie dann das Objekt mit 'set x = CreateObject (Objektname)' (für ein App-Objekt) oder 'set x = GetObject (Dateiname)' (für ein Dokumentobjekt). – ACatInLove

+0

Mit der späten Bindung können Sie beispielsweise ein Dokumentobjekt für jede Datei in einem Ordner erstellen und den Befehl 'PrintOut' an diesen senden. Wenn die App es ausdrucken kann (sonst bekommst du einen Fehler, den du ignorieren kannst). – ACatInLove

+0

in der ersten Unter mir gelungen, späte Bindung zu tun, teilt diese sub eine PDF-Datei in Stücke (jede Seite eine Datei). Aber mit diesem Sub habe ich Probleme, dieses Sub öffnet diese geteilten PDF-Dateien und liest den gesamten Inhalt aus und speichert es in einer String-Variablen. Dank @ACatInLove: Ich werde das versuchen, aber was ist IDispatch speziell? – smartini

Antwort

0

@ACatinLove Dank! Es funktionierte! (mein Code-Extrakt als Ergebnis). Irgendwo habe ich gelesen, dass man "Const AcroExch As Long = 0" nach Dim setzen sollte, warum ist das so?

Dim AC_PD As Object 
Dim AC_Hi As Object 
Dim AC_PG As Object 
Dim AC_PGTxt As Object 

'Const AcroExch As Long = 0 

Dim OS_FSO As Object 
Dim OS_TxtFile As Object 

Set OS_FSO = CreateObject("Scripting.filesystemobject") 

Dim Ct_Page As Long 
Dim i As Long, j As Long, k As Long 
Dim T_Str As String 

Dim Hld_Txt As Variant 

Each_Page = True 

'Set AC_PD = New Acrobat.AcroPDDoc 
'Set AC_Hi = New Acrobat.AcroHiliteList 

Set AC_PD = CreateObject("AcroExch.PDDoc") 
Set AC_Hi = CreateObject("AcroExch.HiliteList")