Hi,
vorweg: Ich habe bereits sehr, sehr viele Foren nach einer Lösung durchsucht und bin leider nicht zu einer Lösung gekommen, konnte das Problem aber schon weit eingrenzen.
Ziel:
Ich möchte gerne mittels Excel-VBA Datensätze auf einem Worksheet (Name, Adresse, Kto.Nr, etc...) in ein definiertes PDF-Formular automatisiert übergeben und dieses dann als PDF-File drucken (speichern des ausgefüllten Formulars nicht möglich).
Problem:
Meine kleine Sub sollte eigentlich funktionieren. Aber ich habe mindestens ein Verweis-Problem. Denn mein VBA kann die notwendigen Objekte nicht setzen und schmeisst den entsprechenden Lfz-Fehler 429 aus ("Objekterstellung durch ActiveX-Komponente nicht mögich"). Verstehe das nur bedingt, denn ich habe alle mir verfügbaren Verweise auf Adobe-Komponeten gesetzt. Irgendwie scheint mir aber die notwendige Objektbibliothek zu fehlen (adobe.olb oder evtl. auch adobe.tlb). Der Fehler kommt bei:
Set gApp = CreateObject("AcroExch.App")
Set gPDDoc = CreateObject("AcroExch.PDDoc")
Set AvDoc = CreateObject("AcroExch.AVDoc")
(vollständiger Code siehe unten)
Fragen:
-
Kann mir jemand erklären, wie ich den Fehler korrekt zu interpretieren habe, bzw. welche Bibliothek ich zu verweisen habe und wo ich diese Bibliothekt finde (in meiner Umgebung finde ich keine adobe.olb .Diese sollte eigentlich im Adobe SDK vorhanden sein, aber auch dort finde ich sie nicht. Im SDK habe ich eine Adobe.tlb gefunden, aber der Verweis auf diese klappt nicht.
-
Kann ich das Problem durch Umformulierung des Codes etv. umgehen?
-
Momentan habe ich ein SaveAs Befehl am Ende vorgesehen (konnte den wegen des Fehlers noch nicht testen), dieser wird aber vermutlich nicht funktionieren, weil ein Speichern des ausgefüllten Formulars nicht möglich ist. Stattdessen "PrintAsPDF" ... kann mir jmd. mit einem entsprechenden Befehl aushelfen, der das macht?
-
Liegt das Problem daran, dass ich bloß einen Reader benutze ??? Denke nicht, oder?
Wäre total Klasse, wenn man mir helfen kann ... *Verzweiflung*
Programme:
-
MS OFFICE 10
-
MS VBA 7.0
-
Adobe Reader X 10.1.4
-
PDFCreator 1.3.2
-
PDF24 4.5.0
VBA-Verweise: (aus Verzweiflung alles aktiviert, was verfügbar ist...)
-
MS Office 14 OLB und Forms 2 OLB
-
Acrobat Acess 3.0 TLB
-
Acrobat Browser Control 1.0 TLB
-
Acrobat 10 TLB (... wo ist die Acrobat 10 OLB???)
-
Adobe Reader File Preview TLB
-
AcroBrokerLib
-
AFormAut 1.0 TLB
-
PDFCreator
-
PDF Filter 1.0 TLB
-
PDFPrevHndlr 1.0 TLB
-
PDFShell 1.0 TLB
-
PDFShellServer 1.0 TLB
CODE:
Public Sub Dummes_PDF_Prog()
Dim gApp As Acrobat.CAcroApp
Dim AvDoc As Acrobat.CAcroAVDoc
Dim gPDDoc As Acrobat.CAcroPDDoc
Const DOC_FOLDER As String = " ... SERVERPFAD ..."
Dim x As Boolean
'#### BIS HIER HIN UND NICHT WEITER -- Laufzeitfehler 429 ... ####
Set gApp = CreateObject("AcroExch.App")
Set gPDDoc = CreateObject("AcroExch.PDDoc")
Set AvDoc = CreateObject("AcroExch.AVDoc")
Dim FormApp As AFORMAUTLib.AFormApp
Dim AcroForm As AFORMAUTLib.Fields
Dim Field As AFORMAUTLib.Field
x = AvDoc.Open(DOC_FOLDER & "\FORMULAR.pdf", "")
Set FormApp = CreateObject("AFormAut.App")
For Each Field In FormApp.Fields
If Field.Name = "BEISPIEL" Then
Field.Value = "BEISPIEL"
End If
Next
FormApp.Save(PDSaveFull, "... SERVERPFAD ... \DUMMESPROGRAMM.pdf")
End Sub
|