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

    代替テキストを削除するPowerPointマクロ

    PowerPointの図やSmartArt、グループやグラフといった視…

  3. Office関連

    Wordの自動実行マクロ

    たまたま使用する機会があったのでメモ書き程度に情報を残しておきます。…

  4. アイコン一覧

    Office 365アイコン(imageMso)一覧(K,L)

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

  5. Office関連

    Outlookの連絡先をvcf形式で一括保存する方法

    Outlookの連絡先をvcf形式で保存する場合、通常は「連絡先を v…

  6. Office関連

    文字列を指定した文字数で分割するVBA関数

    "01234567890123456789012…"というような長い文…

コメント

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

  1. 2019年 6月 09日

Time limit is exhausted. Please reload CAPTCHA.

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

Translate

最近の記事

アーカイブ

PAGE TOP