Einen schönen Mittag,
ich habe ein Makro programmiert, welches eine PDF Vorlage (Vorlage.pdf) öffnet, dort Daten aus einer Excelzeile einspielt und es in einem bestimmten Ordner wieder abspeichert. Das Makro läuft alle Zeilen in Excel durch und erstellt via Schleife so viele pdfs.
Nun habe ich im Code angegeben, welche Pfade relevant sind, möchte aber, dass es auch auf anderen Computern nutzbar ist. Sobald man das Makro starten, soll also eine Abfragebox kommen mit:
* Wo liegt die Vorlagedatei ab?
* Wohin sollen die ausgefüllten PDFs abgespeichert werden?
Kann mir jemand helfen, wie ich meinen Code umschreiben muss? Es wäre so super!
Liebe Grüße
BOnnie
Sub PDF_Formular()
'Die Variablen Datei, Pfad und Name werden als String deklariert
Dim Datei As String, Pfad As String, Name As String
'Schleife zum hochzählen der Zeilen, sowie Name der abgespeicherten .pdf Dateien
Dim i As Integer
For i = 2 To Cells(Rows.Count, 5).End(xlUp).Row
'PDF öffnen und füllen
Set AcroApp = CreateObject("AcroExch.App")
Set AvDoc = CreateObject("AcroExch.AVDoc")
'PDF öffnen
Datei = "C:\Users\Documents\Vorlage.pdf" 'Pfad zur Datei muss angepasst werden
Pfad = "C:\Users\Ausgefüllte Formulare\" 'neuer Pfad, unter der die ausgefüllte Datei gespeichert wird
Name = "PDF-Datei_ausgefüllt_" & i & ".pdf" 'Neuer Name der PDF-Datei
If AvDoc.Open(Datei, Name) Then
AcroApp.Show
Set PDDoc = AvDoc.GetPDDoc()
Set jso = PDDoc.GetJSObject
'Die Werte "HsNr", "OT" usw. müssen durch die entsprechenden Feldnamen ersetzt werden
'Hinter ".Value = " folgt der zu übergebende Wert, zB "= ActiveSheet.Range("A1").Value" etc.
'CStr(Cells(i, sp(p)).Value)
jso.getField("Name Debtor").Value = ActiveSheet.Cells(5, 3).Value
jso.getField("Street and Number").Value = ActiveSheet.Cells(6, 3).Value
jso.getField("City").Value = ActiveSheet.Cells(7, 3).Value
jso.getField("Land").Value = ActiveSheet.Cells(8, 3).Value
jso.getField("Name Creditor").Value = ActiveSheet.Cells(i, 5).Value
jso.getField("Adress Creditor").Value = ActiveSheet.Cells(i, 6).Value
jso.getField("Type of activityreason for payment 1").Value = ActiveSheet.Cells(10, 3).Value
jso.getField("Type of activityreason for payment 2").Value = ActiveSheet.Cells(11, 3).Value
jso.getField("date of payment").Value = ActiveSheet.Cells(i, 7).Value
jso.getField("period of activity").Value = ActiveSheet.Cells(i, 8).Value
jso.getField("Euro").Value = CStr(Cells(i, 13).Value)
jso.getField("Cent").Value = CStr(Cells(i, 14).Text)
jso.getField("Euro_2").Value = CStr(Cells(i, 15).Value)
jso.getField("Cent_2").Value = CStr(Cells(i, 16).Text)
jso.getField("Euro_3").Value = CStr(Cells(i, 17).Value)
jso.getField("Cent_3").Value = CStr(Cells(i, 18).Text)
jso.getField("tax office").Value = ActiveSheet.Cells(13, 3).Value
jso.getField("tax number").Value = ActiveSheet.Cells(14, 3).Value
'Save changes to the PDF document
PDDoc.Save PDSaveFull, Pfad & Name
'Das stand vorher hier: PDDoc.Save PDSaveLinearized, Pfad & Name
'Alles schließen und leeren
PDDoc.Close
AvDoc.Close (True)
AcroApp.Hide
AcroApp.Exit
Set AcroApp = Nothing
Set AvDoc = Nothing
Set PDDoc = Nothing
Set jso = Nothing
Else
MsgBox "Dokument nicht gefunden!"
Set AcroApp = Nothing
Set AvDoc = Nothing
Set PDDoc = Nothing
Set jso = Nothing
End If
Next i
End Sub
'Bereichspasswort: Montag
|