Microsoft Excel

Herbers Excel/VBA-Archiv

Mit VBA PDF-Formular füllen, drucken und speichern

Betrifft: Mit VBA PDF-Formular füllen, drucken und speichern von: JoWE
Geschrieben am: 30.10.2012 22:26:19

Hallo,
mit einem Makro gelingt es mir aus einer Arbeitsmappe heraus die Textfelder eines PDF-Formulares zu füllen und das Formular zu drucken. Das Speichetn des ausgefüllten Formulares aber krieg ich nicht hin. Kann jemand helfen? Oder könnte es daran liegen dass ich nicht die Acrobat-Vollversion sondern nur den Acrobat Reader habe?
Hier das Makro:

'Verweise setzen:
'AFormAut 1.0 Type Library
'Adobe Acrobat 8.0 TypeLibrary

Public Sub Fill_PDF_Form()

    Dim gApp As Acrobat.CAcroApp
    Dim AvDoc As Acrobat.CAcroAVDoc
    Dim gPDDoc As Acrobat.CAcroPDDoc
    Const DOC_FOLDER As String = "D:\test"
    Dim x As Boolean
    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 & "\Anmeldung.pdf", "")
    Set FormApp = CreateObject("AFormAut.App")
    With FormApp
        .Fields("anschrift inhaber").Value = Sheets(1).Cells(2, 1)
    End With
    AvDoc.PrintPages 0, 1, 2, 1, 1
    ' ????? speichern 
    AvDoc.Close (1)
    gApp.Exit

End Sub
Gruß
Jochen

  

Betrifft: Mit dem Reader kann man idR keine ausgefüllten ... von: Luc:-?
Geschrieben am: 31.10.2012 01:07:22

…Dokumente speichern, Jochen;
falls sich an deiner Ausstattung nichts ändert, wirst du wohl das Formular nachbauen und als PDF druck-speichern müssen. Dafür gibt's dann auch Etliches im Archiv.
Gruß Luc :-?


  

Betrifft: Adobe Reader 11 von: mumpel
Geschrieben am: 31.10.2012 04:27:22

Hallo!

Doch, mit dem aktuellen "Adobe Reader 11" ist das Ausfüllen und Speichern nun möglich. Aber meines Wissens nicht fremdgesteuert (per VBA). Die neue Version ist auch zu neu um jetzt schon korrekte Aussagen treffen zu können.

Gruß, René


  

Betrifft: Aha, wenn die kostenlos ist ... von: Luc:-?
Geschrieben am: 31.10.2012 15:43:24

…und ganz neu, kommt das für die Ämter wohl zu spät, René,
denn seit wenigen Jahren kann man deren Produkte ja auch ausgefüllt speichern, wenn ich mich recht entsinne. Ursprgl ging das nicht.
Gruß Luc :-?


  

Betrifft: Aber er nutzt doch nicht den Reader.... von: Jürgen V.
Geschrieben am: 31.10.2012 09:56:48

... sondern die Vollversion, Luc, sonst könnte er schon garnicht die API nutzen, das geht mit dem Reader auch nicht.

Jochen, das Speichern sollte eigentlich möglich sein, ich habe gerade leider keinen Zugriff auf einen Rechner mit Adobe Acrobat. Aber hast Du mal über F2 im VBA-Editor und Auswahl der Adobe-Bibliothek(en) geschaut, welche Methoden Dir diese bereitstellen bzw. ob die von Dir benötigte dabei ist?

Falls das Speichern tatsächlich fehlen sollte: vielleicht geht es auch über das Drucken an den PDF-Drucker.

Gruß, Jürgen


  

Betrifft: AW: Aber er nutzt doch nicht den Reader.... von: JoWE
Geschrieben am: 31.10.2012 13:52:47

Hallo zusammen,

doch ich benutze den Acrobat Reader in der Version 10.1.3.
Habe das Problem aber inzwischen gelöst.
Die Verweise auf die entsprechenden Befehlsbibliotheken stammen aus den entsprechende PlugIns von Adobe. Mit der Online-Hilfe für die Befehlsbibliotheken sieht's aber eher schlecht aus.
Gleichwohl gibts aber ausreichende Hilfen im WEB.
Die Lösung für das Speicher war schließlich war ganz einfach:

Dim sDoc
Set sDoc = AvDoc.GetPDDoc
saveOk = sDoc.Save(1, DOC_FOLDER & "\OK_Formular.pdf")
AvDoc.Close (1)
gApp.Exit

Danke für Eure Gedanken
Gruß
Jochen


  

Betrifft: Na, prima! Dank f.Pionierarbeit! Gruß owT von: Luc:-?
Geschrieben am: 31.10.2012 15:45:36

:-?


  

Betrifft: AW: Aber er nutzt doch nicht den Reader.... von: Jürgen V.
Geschrieben am: 31.10.2012 16:37:16

Hallo Jochen,

da hatte ich Tomaten auf den Augen, Du hast ja explizit nach dem Reader gefragt. Vielleicht hatte ich auch Scheuklappen auf, weil ich mich vor einiger Zeit (noch unter Adobe Reader 6) intensiv mit einer ähnlichen Lösung beschäftigt habe, es dann aber mit der Erkenntnis beendet habe, dass es mit der Vollversion geht, aber nicht mit dem Reader.

Daher hat mich Deine Lösung besonders interessiert, und ich habe Deinen Code unter Excel 2010 laufen lassen (nachdem ich die beiden angegebenen Verweise gesetzt habe). Bei mir scheitert der Code aber spätestens bei "Set gApp = CreateObject("AcroExch.App")" mit einem Fehler "Objekterstellung durch ActiveX-Komponente nicht möglich". Ich habe es mit einem Adobe Reader 8 und einem Adobe Reader X versucht, beides mal das gleiche Ergebnis. Und das entspricht dem, was ich damals glaubte, festgestellt zu haben: der Reader bringt zwar die Bibliotheken mit, erlaubt aber nicht deren Nutzung.

Ich frage mich nun, warum es bei meinen aktuellen Versuchen weiterhin nicht funktioniert, bei Dir jedoch schon. Hast Du sonst noch eine Einstellung getroffen oder doch noch eine Vollversion-Installation auf dem Rechner? Kann jemand bestätigen, dass die Lösung mit dem Reader allein funktioniert?

Da mich das Thema brennend interessiert, bin ich so frei, es auf "offen" zu stellen, auch wenn ich nicht Thread-Starter bin.

Gruß, Jürgen


  

Betrifft: AW: Aber er nutzt doch nicht den Reader.... von: JoWE
Geschrieben am: 31.10.2012 19:59:19

Hallo Jürgen,
hast Du die Verweise gesetzt?
Nein, habe keine Vollversion, nur den Acrobat Reader X
Hier nochmal der Code und ja, natürlich muss man die Pfade der eigenen Umgebung anpassen;

Public Sub Fill_PDF_Form()

    'Verweise gesetzt?
    'Adobe Acrobat 10.0 Type Library 
    '(in C:\Program Files (x86)\Adobe\Reader 10.0\Reader\AcroRd32.dll)
    'AFormAut 1.0 Type Library 
    '(C:\Program Files (x86)\Adobe\Reader 10.0\Reader\plug_ins\AcroForm.api)

    Dim gApp As Acrobat.CAcroApp
    Dim AvDoc As Acrobat.CAcroAVDoc
    Dim gPDDoc As Acrobat.CAcroPDDoc
    Const DOC_FOLDER As String = "D:\Downloads\test"
    Dim x As Boolean
    Dim sDoc As Object
    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 & "\Anmeldung.pdf", "")
    Set FormApp = CreateObject("AFormAut.App")
    With FormApp
        .Fields("anschrift inhaber").Value = Sheets(1).Cells(2, 1)
        '...
    End With
    AvDoc.PrintPages 0, 1, 2, 1, 1
    Set sDoc = AvDoc.GetPDDoc
    saveOk = sDoc.Save(1, DOC_FOLDER & "\OK_Anmeldung.pdf")
    AvDoc.Close (1)
    gApp.Exit

End Sub
Natürlich brauchst Du ein PDF-File, welches (für diesen Code) ein Feld "anschrift inhaber" aufweist. Wie gesagt auf meinem Rechner klappt es. Inzwischen hab' ich es mal auf einem weiteren PC ohne eine Acrobat Vollversion mit Erfolg sogar unter Windows XP und Office 2003 getestet.

Gruß
Jochen


  

Betrifft: bei mir geht's auch nicht-Datei anbei von: robert
Geschrieben am: 01.11.2012 08:27:29

https://www.herber.de/bbs/user/82422.xlsm

Gruß
robert


  

Betrifft: AW: bei mir geht's auch nicht-Datei anbei von: JoWE
Geschrieben am: 01.11.2012 14:25:29


Hallo nochmal

jetzt gerade auf einem Vista-PC mit Erfolg getestet.
Keine Adobe-Vollversion,
heute neu installierter Reader X, MS Excel 2003 SP3
Verweise gesetzt:
Adobe Acrobat 10.0 Type Library
in C:\Program Files\Adobe\Reader 10.0\Reader\AcroRd32.dll
AFormAut 1.0 Type Library
in C:\Program Files\Adobe\Reader 10.0\Reader\plug_ins\AcroForm.api

Hier meine Datei (Pfad anpassen):
https://www.herber.de/bbs/user/82430.xls

das PDF-Formular hatte ich von:
http://www.bietigheim-bissingen.de/Formulare_zum_download_pdf.170.0.html

Gruß
Jochen


  

Betrifft: Verweise gesetzt, hier kommt Fehler von: robert
Geschrieben am: 01.11.2012 15:22:13

Set gApp = CreateObject("AcroExch.App")

Gruß
robert


  

Betrifft: AW: Nee det vasteh' ick jetzt ooch nich... von: JoWE
Geschrieben am: 01.11.2012 15:41:16

Hallo,

dann kann ich leider nichts weiteres mehr empfehlen, sorry.
Hier noch ein Schnappschuss der gesetzten Verweise:


Jochen


  

Betrifft: Naja, dann geht's halt nicht.. :( von: robert
Geschrieben am: 01.11.2012 15:59:37

Hi,

die Verweise sind wie bei Dir gesetzt, Fehler kommt

Set gApp = CreateObject("AcroExch.App")

... warum ???

Danke umd Gruß
robert


  

Betrifft: AW: Naja, dann geht's halt nicht.. :( von: mumpel
Geschrieben am: 04.11.2012 08:03:19

Hallo!

"AcroExch.App" gibt es nur bei Adobe Acrobat, nicht beim Adobe-Reader.

Gruß, René


  

Betrifft: Danke und Gruß ;-) owT von: robert
Geschrieben am: 04.11.2012 08:24:27




  

Betrifft: AW: Naja, dann geht's halt nicht.. :( von: JoWE
Geschrieben am: 04.11.2012 15:03:22


Hallo Robert,

wenn Du sagst die Verweise seien gesetzt worden, dann müssen die entsprechenden Bibliotheken (die Dateien) doch auch vorhanden sein, oder?

Gruß
Jochen


  

Betrifft: AW: Naja, dann geht's halt nicht.. :( von: robert
Geschrieben am: 04.11.2012 17:00:10

Hi,

"AcroExch.App" gibt es nur bei Adobe Acrobat, nicht beim Adobe-Reader.

diese Antwort hat mumpel(Rene) gegeben.

Daher geht es bei mir nicht- da nur Adobe Reader vorhanden !

Gruß
robert


  

Betrifft: AW: Du hast meine Frage nicht beantwortet...oT von: JoWE
Geschrieben am: 04.11.2012 18:46:27




  

Betrifft: Ja, sind vorhanden........ ;-) owT von: robert
Geschrieben am: 04.11.2012 19:07:40




  

Betrifft: AW: Ja, sind vorhanden........ ;-) owT von: mumpel
Geschrieben am: 04.11.2012 22:23:23

Ich habe gerade mal nachgeschaut. "AcroExch" (AcroForm.api) ist im Adobe-Reader 11 integriert. Sollte also funktionieren. Ich selber kann es nicht testen, da bei mir Adobe Acrobat anspringt, nicht der Adobe-Reader.


  

Betrifft: AW: Ja, sind vorhanden........ ;-) owT von: robert
Geschrieben am: 05.11.2012 08:22:59

Hi Rene,

alles schön und gut, aber die Fehlermeldung ist da!!!!!!!!!

Aber, vergessen wir diese Problem, ich kann dmit leben ;-))


Gruß
robert


  

Betrifft: AW: Ja, sind vorhanden........ ;-) owT von: mumpel
Geschrieben am: 05.11.2012 09:13:38

Schon aufgeben? Mir ist noch etwas eingefallen. Möglicherweise ist die Steuerdatei gesperrt (Killbits). Das passsiert öfters mal nach einem Windowsupdate.

Beides herunterladen, in einen Ordner entpacken und dan die acm.exe starten. Rot heisst deaktiviert, grün akitviert. Markiere die erforderlichen Steuerdateien (Mehrfachseektion mit STRG-Taste) und klicke auf das grüne Symbol ganz links.

ActiveX Compatibility Manager (ACM)
ACM - Deutsche Sprachdatei


  

Betrifft: OK, aber welche... von: robert
Geschrieben am: 05.11.2012 13:04:13

Hi Rene,

..Steuerdateien brauche ich aktiviert ?

Sind ja jede Menge....

Gruß
robert


  

Betrifft: AW: OK, aber welche... von: mumpel
Geschrieben am: 05.11.2012 14:10:20

Du kannst alle Einträge aktivieren. Nur bei unbekannten Herstellern aufpassen, sofern vorhanden.


  

Betrifft: hab alle aktiviert, aber Fehler weiterhin.... von: robert
Geschrieben am: 05.11.2012 15:00:16

Set gApp = CreateObject("AcroExch.App")

Gruß
robert


  

Betrifft: Aber wie bekommt es Jochen hin? von: Jürgen V.
Geschrieben am: 05.11.2012 17:35:03

Hallo,

ich habe auch noch mal meine Nase hineingesteckt: die Verweise auf die Bibliotheken ist das eine (die bringt auch der Reader mit, und man kann Verweise auf sie setzen), das andere das Erzeugen der Objekte wie "AcroExch.App". Auf einem Rechner mit der Vollversion ist die entsprechende Klasse definiert und verweist letztlich auf die Acrobat.exe der Vollversion. Ein CreateObject("AcroExch.App") funktioniert hier also. Ist nur der Reader installiert, fehlen die entsprechenden Einträge in der Registry, eine "AcroExch.App" ist dem System somit unbekannt.

Spannend ist jedoch, dass bei Jochen der Code auch nur mit dem Reader funktioniert - warum? Und warum bislang bei keinem anderen? Vielleicht hat Jochen ja noch einen Hinweis.

Gruß, Jürgen


  

Betrifft: AW: Aber wie bekommt es Jochen hin? von: JoWE
Geschrieben am: 05.11.2012 19:35:59

Hallo zusammen,

echte Tipps hab' ich auch nicht. Dies kann ich nach Durchsuchung meiner Registry sagen:
Da hatte ich mal eine Testversion Adobe Photoshop CS3 (die ist aber wieder deinstalliert worden), eine fehlgeschlagene Installation vom Adobe Reader 11 und von Adobe noch für E-Books die Adobe ARM - sonst defintiv nix. Weitere Software, PDF-Files betreffend noch FreePdfXP. Das war's.

Ich weiß nicht warum es beim meinem PC funktioniert, Hauptsache für mich: Es geht.
Einige Infos gab es hier: http://www.khk.net/wordpress/

Gruß
Jochen


 

Beiträge aus den Excel-Beispielen zum Thema "Mit VBA PDF-Formular füllen, drucken und speichern"