Excel

PDFファイルにヘッダーとフッターを追加するVBAマクロ

moug“マクロで既存のPDFファイルのフッターを操作(追加)したい”という質問がありました。

PDFファイルに差し込み印刷するVBAマクロ」でも書いているように、VBAマクロからPDFファイルを操作する場合は、OLEオートメーション機能でAcrobatを操作するのが簡単です(Adobe Readerは不可)。

Option Explicit

Public Sub Sample()
  Dim appAcro As Object
  Dim avdoc As Object
  Const PDSaveFull = &H1
  
  '------------------------------------------------------
  '[constants]
  'A wrapper object for holding various constant values.
  'Currently, this property returns an object with a
  'single property, align.
  '------------------------------------------------------
  'app.constants.align.left    : 0
  'app.constants.align.center  : 1
  'app.constants.align.right   : 2
  'app.constants.align.top     : 3
  'app.constants.align.bottom  : 4
  '------------------------------------------------------
  
  Set appAcro = CreateObject("AcroExch.App")
  Set avdoc = CreateObject("AcroExch.AVDoc")
  If avdoc.Open("C:\Test\MyFile.pdf", vbNullString) = True Then
    appAcro.Show
    With avdoc.GetPDDoc
      With .GetJSObject
        'ヘッダー追加
        .addWatermarkFromText cText:="ヘッダー", _
                              cFont:="Meiryo UI", _
                              nFontSize:=24, _
                              aColor:=.Color.blue, _
                              nHorizAlign:=.app.Constants.Align.Left, _
                              nVertAlign:=.app.Constants.Align.Top, _
                              nHorizValue:=36, _
                              nVertValue:=-36
        'フッター追加
        .addWatermarkFromText cText:="フッター", _
                              cFont:="Meiryo UI", _
                              nFontSize:=24, _
                              aColor:=.Color.red, _
                              nHorizAlign:=.app.Constants.Align.Right, _
                              nVertAlign:=.app.Constants.Align.Bottom, _
                              nHorizValue:=-36, _
                              nVertValue:=36
      End With
      .Save PDSaveFull, "C:\Test\MyFile2.pdf" 'PDFファイルを別名保存
    End With
    avdoc.Close 1 '文書を保存せずに閉じる
    appAcro.Hide: appAcro.Exit
  End If
  MsgBox "処理が終了しました。", vbInformation + vbSystemModal
End Sub

上記コードは、JSObject経由でDocオブジェクト(Acrobat)のaddWatermarkFromTextメソッドを呼び出してヘッダーとフッターを追加しています。

メソッドの説明については、下記ページに詳しく記載されているので、そちらをご参照ください。

  1. addWatermarkFromText
  2. 透かしを追加する (addWatermarkFromText)
  3. Adding Headers and Footers
  4. Watermarking a PDF with JavaScript

ただし、上記のようにプログラム経由でヘッダーやフッターを追加してしまうと、Acrobatでヘッダー・フッターの更新を行おうとしても、下図のように「このファイルにはヘッダーまたはフッターが見つかりません。ヘッダーまたはフッター情報が表示されていても、Acrobat で追加したものではないため、更新または削除することはできません。」といった警告が表示され、更新を行うことができません。

addWatermarkFromText_01

大量のファイルを一括処理するときは「ヘッダーやフッターを追加する方法 (Acrobat X)」にあるような、Acrobatの標準機能を使った方が良いだろうと思います。

[リボン・カスタマイズ]checkBox要素のチェック状態を動的に設定する。前のページ

「図のリセット」を実行するExcelマクロ次のページ

関連記事

  1. Office関連

    プログラムのソースコードを別の言語に変換するVBAマクロ

    SharpDevelopが公開している、ソースコードを変換するAPI「…

  2. Office Scripts

    デスクトップ版ExcelでOffice スクリプトとして操作を記録できるようになりました。

    ※ 本記事で紹介している機能はプレビュー版に基づいており、今後のアップ…

  3. Office関連

    Chrome DevTools ProtocolでEdgeを操作するVBAマクロ

    Microsoft Edgeの操作を自動化する際はWebDriverを…

  4. Office関連

    Slackのカスタム絵文字を一括作成するVBAマクロ

    在宅勤務で使うビジネスチャットサービスとして注目されている「Slack…

  5. Office関連

    セルの行数をカウントするWordマクロ

    「ソースコードを番号行付きのテーブルに変換するWordマクロ」を実行し…

  6. Office関連

    PowerPointのマクロを共有化して使う方法

    記事のタイトルだけ見るとちょっと分かりづらいですが、要するにWordの…

コメント

  1. この記事へのコメントはありません。

  1. 2019年 6月 09日

Time limit is exhausted. Please reload CAPTCHA.

※本ページはプロモーションが含まれています。

Translate

最近の記事

アーカイブ

PAGE TOP