|
81584で質問させていただいたのですが解決せず再度投稿です。
81584ではラジオボタン操作も質問したのですが、ここでは0から始まる数字の差し込みお聞きしたいです。
以下は他のサイトで投稿した内容です。(こちらも回答がついていません)
PDFファイルにエクセルデータを差し込み、印刷せず、別名でPDFファイルを保存するVBAマクロを知りたく下記の文をサイトで見つけたのですが、これに001から始まる通番を追加したいのですがうまくいきません。
エクセル側はD列に通番(001~005)を、PDFファイルにフィールド名:通番を、構文は
.getField("fldAddress").Value = CStr(ActiveSheet.Cells(i, 3).Value)
の下に
.getField("通番").Value = CStr(ActiveSheet.Cells(i, 4).Value)
を追加しました。
実行すると、最初は001になるのですが以降は2,3,4,5と頭の00が省略されてしまいます。
元の構文です。
(エクセルデータはA列:氏名、B列:年齢、C列:住所です)
対象となるPDFファイルには下図のように氏名(フィールド名:fldName)、年齢(フィールド名:fldAge)、住所(フィールド名:fldAddress)の3つのフィールドがあり、
下図のようなセルA2 – C6までの値を差し込むことを想定しています。
※ 動作確認はWindows 7 + Acrobat XI環境で行いました。
Public Sub Sample2()
Dim app As Object
Dim avdoc As Object
Dim pddoc As Object
Dim i As Long
Const PDSaveFull = 1
Const PdfFilePath As String = "C:\Files\template.pdf" 'PDFファイルのパス
Set app = CreateObject("AcroExch.App")
Set avdoc = CreateObject("AcroExch.AVDoc")
If avdoc.Open(PdfFilePath, "") = True Then
app.Show 'Acrobat表示
Set pddoc = avdoc.GetPDDoc
With pddoc.GetJSObject
For i = 2 To ActiveSheet.Range("A1").End(xlDown).Row
.getField("fldName").Value = CStr(ActiveSheet.Cells(i, 1).Value)
.getField("fldAge").Value = CStr(ActiveSheet.Cells(i, 2).Value)
.getField("fldAddress").Value = CStr(ActiveSheet.Cells(i, 3).Value)
pddoc.Save PDSaveFull, "C:\Files\MyPDF_" & i - 1 & ".pdf" 'PDFファイルを別名保存
Next
End With
avdoc.Close 1 '文書を保存せずに閉じる
app.Hide: app.Exit
End If
End Sub
ちなみに同じような質問がされていたのですが
Set pddoc = avdoc.GetPDDoc
With pddoc.GetJSObject
上記2行をループ内に入れることによって自己解決したとのことでしたが具体的にどのようにされたのかがわからず投稿させていただくことになってしまいました。
どうかよろしくお願い致します。
|
|