PDA

Vollständige Version anzeigen : Vba: Pdf aus Excel befüllen Automatisierungsfehler


kalinchen
18.07.2014, 17:09
Hallo,
ich versuche Formulare aus Pdf-Dateien zu befüllen.
Ausgangspunkt ist dieses Script https://forums.adobe.com/thread/302309
Aber es scheint nicht zu funktionieren an der Stelle wo er versucht zum zweiten mal auf die Zellen zugreifen will.
Es kommt ein Automatisierungsfehler.
Hat jemand einen Tipp?
Vielen Dank!

Sub Pdfdings()


Dim gApp As Acrobat.CAcroApp
Dim avdoc As Acrobat.CAcroAVDoc
Dim gPDDoc As Acrobat.CAcroPDDoc
Const DOC_FOLDER As String = "C:\Users\Frank\Documents"
Dim x As Boolean

Set gApp = CreateObject("AcroExch.App")
Set gPDDoc = CreateObject("AcroExch.PDDoc")
Set avdoc = CreateObject("AcroExch.AVDoc")

'Hides Acrobat - So Far So Good
'gApp.Hide

Dim FormApp As AFORMAUTLib.AFormApp
Dim AcroForm As AFORMAUTLib.Fields
Dim Field As AFORMAUTLib.Field
Dim z, i, j, n As Integer
Dim wksTab1 As Worksheet
Dim Feld, Inhalt As String

Set wksTab1 = Sheets("Tabelle2")

'Open PDF that I choose. Acrobat still has not flashed on my screen
j = 1
i = 2
While i < 3
x = avdoc.Open(DOC_FOLDER & "\formular_ve01a.pdf", "temp")

'Acrobat Now Pops up on my screen. However, I get an error without this line. avdoc.Show works the same as Maximize it seems.
avdoc.Maximize (1)

'Hides it again, right after it opens. This creates a flash
'gApp.Hide

Set FormApp = CreateObject("AFormAut.App")

While j < 39



'If the Maximize line is not there, this is where I receive error about document viewer
Feld = wksTab1.Cells(1, j).Value
Inhalt = wksTab1.Cells(i, j).Value

For Each Field In FormApp.Fields
If Field.Name = Feld Then
Field.Value = Inhalt
End If
Next

j = j + 1
Wend
Dim sDoc
Set sDoc = avdoc.GetPDDoc
saveOk = sDoc.Save(1, DOC_FOLDER & "\OK_Formular" & wksTab1.Cells(1, 1).Value & ".pdf")
avdoc.Close (1)
gApp.Exit
i = i + 1
Wend
End Sub

kalinchen
19.07.2014, 11:10
ein Beispiel

Hajo_Zi
19.07.2014, 11:12
mit dem Beitrag von gestern war es ja noch ok. Aber mit dem heutigen.
<a href="http://hajo-excel.de/crossposting.htm" title="Crossposting" >Zu Crossposting lese diese Seite Hajo-Excel.de</a>
Du hast Glück das JINX nicht mehr da ist, ansonsten würde Dein Beitrag wegen Crossposting geschlossen werden.
Ein Zitat aus der Netiquette (hier im Forum):
Unerwünscht sind auch Crosspostings - also dieselbe Frage gleichzeitig in mehreren Foren (nicht nur im MSOF).
Denn auf diese Weise werden mehrere Gruppen von Leuten mit dem gleichen Thema befasst, ohne dass sie voneinander wissen.
Naturgemäß laufen dann die Antworten, die im einen Forum "zu spät" gegeben wurden, ins Leere und bleiben ohne Resonanz.
Es reicht also, zunächst in einem Forum zu posten - wenn die Antworten dann unbefriedigend sein sollten, steht es einem anschließend immer noch offen, ein anderes Forum zu Rate zu ziehen.

<img src="http://Hajo-Excel.de/images/grusz1.gif" align="middle" height="40" alt="Grußformel"><a href="http://Hajo-Excel.de/index.htm"><img border="0" src="http://Hajo-Excel.de/images/logo_hajo3.gif" align="middle" height="40" alt="Homepage"></a>

kalinchen
19.07.2014, 11:16
Entschuldige bitte.

kalinchen
20.07.2014, 16:32
Hallo,
hier die Lösung, die ich mit Hilfe eines anderen Forums gefunden habe,
Nur dass niemand mehr drüber nachdenkt und falls es mal jemand sonst braucht
Vielen Dank allen die drüber nachgedacht haben.

Hi

so geht's besser


<pre>While j < 39
'If the Maximize line is not there, this is where I receive error about document viewer
Feld = wksTab1.Cells(1, j).Value
Inhalt = wksTab1.Cells(i, j).Value
FormApp.Fields(Feld).Value = Inhalt
j = j + 1
Wend
</pre>


einige deiner Spalten enthalten Fehler, z.B: Spalte 'weiblich'. Hier muss als Feldname Geschlecht des Kindes stehen und als Wert weiblich

Warum aber das ursprüngliche Script so nicht funktioniert kann ich dir leider nicht sagen, kenne mich damit überhaupt nicht aus