Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1284to1288
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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

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

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

27
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Mit dem Reader kann man idR keine ausgefüllten ...
31.10.2012 01:07:22
Luc:-?
…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 :-?

Adobe Reader 11
31.10.2012 04:27:22
mumpel
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é

Aha, wenn die kostenlos ist ...
31.10.2012 15:43:24
Luc:-?
…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 :-?

Anzeige
Aber er nutzt doch nicht den Reader....
31.10.2012 09:56:48
Jürgen V.
... 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

AW: Aber er nutzt doch nicht den Reader....
31.10.2012 13:52:47
JoWE
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

Anzeige
Na, prima! Dank f.Pionierarbeit! Gruß owT
31.10.2012 15:45:36
Luc:-?
:-?

AW: Aber er nutzt doch nicht den Reader....
31.10.2012 16:37:16
Jürgen V.
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

Anzeige
AW: Aber er nutzt doch nicht den Reader....
31.10.2012 19:59:19
JoWE
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

Anzeige
AW: bei mir geht's auch nicht-Datei anbei
01.11.2012 14:25:29
JoWE
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

Anzeige
Verweise gesetzt, hier kommt Fehler
01.11.2012 15:22:13
robert
Set gApp = CreateObject("AcroExch.App")
Gruß
robert

AW: Nee det vasteh' ick jetzt ooch nich...
01.11.2012 15:41:16
JoWE
Hallo,
dann kann ich leider nichts weiteres mehr empfehlen, sorry.
Hier noch ein Schnappschuss der gesetzten Verweise:
Userbild
Jochen

Naja, dann geht's halt nicht.. :(
01.11.2012 15:59:37
robert
Hi,
die Verweise sind wie bei Dir gesetzt, Fehler kommt
Set gApp = CreateObject("AcroExch.App")
... warum ???
Danke umd Gruß
robert

AW: Naja, dann geht's halt nicht.. :(
04.11.2012 08:03:19
mumpel
Hallo!
"AcroExch.App" gibt es nur bei Adobe Acrobat, nicht beim Adobe-Reader.
Gruß, René

Danke und Gruß ;-) owT
04.11.2012 08:24:27
robert

AW: Naja, dann geht's halt nicht.. :(
04.11.2012 15:03:22
JoWE
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

Anzeige
AW: Naja, dann geht's halt nicht.. :(
04.11.2012 17:00:10
robert
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

AW: Du hast meine Frage nicht beantwortet...oT
04.11.2012 18:46:27
JoWE

Ja, sind vorhanden........ ;-) owT
04.11.2012 19:07:40
robert

AW: Ja, sind vorhanden........ ;-) owT
04.11.2012 22:23:23
mumpel
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.

AW: Ja, sind vorhanden........ ;-) owT
05.11.2012 08:22:59
robert
Hi Rene,
alles schön und gut, aber die Fehlermeldung ist da!!!!!!!!!
Aber, vergessen wir diese Problem, ich kann dmit leben ;-))
Gruß
robert

Anzeige
AW: Ja, sind vorhanden........ ;-) owT
05.11.2012 09:13:38
mumpel
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

Anzeige
OK, aber welche...
05.11.2012 13:04:13
robert
Hi Rene,
..Steuerdateien brauche ich aktiviert ?
Sind ja jede Menge....
Gruß
robert

AW: OK, aber welche...
05.11.2012 14:10:20
mumpel
Du kannst alle Einträge aktivieren. Nur bei unbekannten Herstellern aufpassen, sofern vorhanden.

hab alle aktiviert, aber Fehler weiterhin....
05.11.2012 15:00:16
robert
Set gApp = CreateObject("AcroExch.App")
Gruß
robert

Aber wie bekommt es Jochen hin?
05.11.2012 17:35:03
Jürgen V.
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

Anzeige
AW: Aber wie bekommt es Jochen hin?
05.11.2012 19:35:59
JoWE
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

15 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige