Office関連

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関連

    Outlook REST APIに会議室情報を取得するAPIが追加されました。

    松崎さんのツイートで、Outlook REST APIのベータエンドポ…

  2. Office関連

    Outlookの予定本文の一部を文字装飾するVBAマクロ

    Outlookの予定本文の一部をマクロで太字にしたい」との質問がありま…

  3. アイコン一覧

    Office 2013 アイコン一覧(NUM)

    ・Office 2013 アイコン一覧 NUM…

  4. アイコン一覧

    Office 365アイコン(imageMso)一覧(A)

    Office 365のデスクトップ版Officeアプリケーション(Wo…

  5. Office アドイン

    [Office用アプリ]RSS表示アプリを作成する。

    ※ この情報はOffice 2013 カスタマー プレビュー版を元にし…

  6. Power Automate for desktop

    [Power Automate for desktop]他ブックのマクロを実行する方法

    2022年1月のアップデートで、「Excel の起動」アクションでEx…

コメント

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

  1. 2019年 6月 09日

Time limit is exhausted. Please reload CAPTCHA.

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

Translate

最近の記事

アーカイブ

PAGE TOP