Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


192 / 13645 ツリー ←次へ | 前へ→

【81592】PDFへのデータ差し込み junhoshi 21/1/14(木) 10:20 質問[未読]
【81594】Re:PDFへのデータ差し込み sinzo 21/1/16(土) 17:12 回答[未読]
【81598】Re:PDFへのデータ差し込み junhoshi 21/1/19(火) 9:43 お礼[未読]
【81595】Re:PDFへのデータ差し込み sinzo 21/1/16(土) 17:34 回答[未読]

【81592】PDFへのデータ差し込み
質問  junhoshi  - 21/1/14(木) 10:20 -

引用なし
パスワード
   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行をループ内に入れることによって自己解決したとのことでしたが具体的にどのようにされたのかがわからず投稿させていただくことになってしまいました。

どうかよろしくお願い致します。

【81594】Re:PDFへのデータ差し込み
回答  sinzo  - 21/1/16(土) 17:12 -

引用なし
パスワード
   Win10,ProDC2015でも2通目から先頭の0抜けるの確認しました。
対策としてあんちょく?ですが
毎回新しいテンプレートで作業するのはいかがでしょうか。


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")
For i = 2 To ActiveSheet.Range("A1").End(xlDown).Row
 If avdoc.Open(PdfFilePath, "") = True Then
  app.Show 'Acrobat表示
  Set pddoc = avdoc.GetPDDoc
  With pddoc.GetJSObject
   .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ファイルを別名保存
  End With
  avdoc.Close 1 '文書を保存せずに閉じる
 End If
Next
app.Hide: app.Exit
End Sub

【81595】Re:PDFへのデータ差し込み
回答  sinzo  - 21/1/16(土) 17:34 -

引用なし
パスワード
   ラジオボタンは,
ボタン名 男、女
グループ名 Radio Button1
でてすとしました。

[81584]
.getField("text").Value = CStr(ActiveSheet.Cells(i, 1).Value)
.getField("Radio Button1").Value = ActiveSheet.Cells(i, 2).Value

【81598】Re:PDFへのデータ差し込み
お礼  junhoshi  - 21/1/19(火) 9:43 -

引用なし
パスワード
   ありがとうございます。詳細まで理解したわけではありませんが実行できました。ラジオボタンの操作はまだ、試していませんので後々ご報告いたします。

192 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free