

この記事でわかること。
- Excel VBAからPublisherを操作する基本的なことがわかる。
Excel VBAからPublisherを操作したい。
【事前設定】ExcelからPublisherライブラリを参照設定する。
Excelを起動したらショートカットキーAlt+F11を押してVBAのEditor(VBE)を開きます。初めてExcelでマクロを作成する方は下記の事前設定(マクロのセキュリティ設定)が必要な場合があるので確認してください。



▲「Microsoft Publisher **.* Object Library」にチェックを入れてOKを押します。「**.*」の部分はパソコンにインストールされたPublisherのバージョン番号が入りますので、環境により数字が異なる可能性があります。
だいたい必須になるコード
まず、VBAでPublisherを操作するにはPublisherのオブジェクトの階層構造を理解する必要があります。下記の記事で解説しているので参考になさってください。

Publisherドキュメントを開く。
'Publisherアプリのインスタンスを作成します。
Dim pubApp As Publisher.Application
Set pubApp = New Publisher.Application
'Publisherドキュメントを開きます。
Dim pubDoc As Publisher.Document
Set pubDoc = pubApp.Open("C:\Users\user\Documents\文書1.pub")
Publisherドキュメントを保存する。
上書き保存
'Publisherドキュメントを上書き保存します。
pubDoc.Save
名前を付けて保存
'Publisherドキュメントを名前を付けて保存します。
pubDoc.SaveAs Filename:="C:\Users\user\Documents\文書1dup.pub"
Publisherドキュメントを閉じる。
'Publisherドキュメントを閉じます。
pubDoc.Close
'Publisherアプリを閉じます。
pubApp.Quit
'Publisherインスタンスをメモリから解放します。
Set pubApp = Nothing
サンプルコード
サンプルコードです。
Option Explicit
Sub Publisher()
'Publisherアプリのインスタンスを作成します。
Dim pubApp As Publisher.Application
Set pubApp = New Publisher.Application
'Publisherドキュメントを開きます。
Dim pubDoc As Publisher.Document
Set pubDoc = pubApp.Open("C:\Users\user\Documents\文書1.pub")
'Publisherドキュメントのファイル名を出力。
Debug.Print "Publisherファイル名:" & pubDoc.Name
'Publisherドキュメントのフルパスを出力。
Debug.Print "Publisherファイル名(フルパス):" & pubDoc.FullName
'Publisherドキュメントの格納フォルダを出力。
Debug.Print "Publisher保存フォルダ:" & pubDoc.Path
'Pageオブジェクトを取得します。
Dim pubPages As Publisher.pages
Dim pubPage1 As Publisher.page
Dim pubPage2 As Publisher.page
Set pubPages = pubDoc.pages
'Page数を出力します。
Debug.Print "ページ数:" & pubPages.Count
'Pageを追加します。
Set pubPage1 = pubPages.Add(Count:=1, after:=pubPages.Count)
'Pageを複製します。
Set pubPage2 = pubPages(1).Duplicate
'Shapeオブジェクトを取得します。
Dim pubShapes As Publisher.shapes
Dim pubShape As Publisher.shape
Set pubShapes = pubPages(1).shapes
'Shapeオブジェクトの数を取得します。
Debug.Print "1ページ目のシェイプの数:" & pubShapes.Count
'TextRangeオブジェクトを取得します。
Dim pubText As Publisher.TextRange
Set pubText = pubShapes(1).TextFrame.TextRange
Debug.Print "シェイプのテキスト:" & pubText
'TextRangeオブジェクトのテキストプロパティにテキストをセットします。
pubText.text = "hello world!"
'Publisherドキュメントを上書き保存します。
' pubDoc.Save
'Publisherドキュメントを名前を付けて保存します。
pubDoc.SaveAs Filename:="C:\Users\user\Documents\文書1dup.pub"
'Publisherドキュメントを閉じます。
pubDoc.Close
'Publisherアプリを閉じます。
pubApp.Quit
'Publisherインスタンスをメモリから解放します。
Set pubApp = Nothing
End Sub
Publisher VBAのリファレンス
https://docs.microsoft.com/ja-jp/office/vba/api/overview/publisher
まとめ
じょじおExcel VBAからPublisherを操作する基本について紹介しました。
ぽこがみさまこのブログではRPA・ノーコードツール・VBA/GAS/Pythonを使った業務効率化などについて発信しています。
参考になりましたらブックマーク登録お願いします!
Publisherを学ぶ。
動画でPublisherの使い方を学ぼう!VBAを学ぶ
▲Excel・Wordの基本的な使い方についての初心者向けの解説書です。かなり細かく丁寧に解説されています。著者の方のYouTubeチャンネルも併せて観るとより理解が深まるかと思います。
▲「Excel作業を自動化したいけどVBAはよくわからない・・・」という方でもPower Automate for Desktop(PAD)なら簡単に自動化できるかもしれません。PADは、Windows11にも公式搭載されたMicrosoftのRPAソフトウェアです。本書はPADでExcelなどのパソコン操作全般の自動化の基本がわかりやすく解説されています。
▲「Excel VBAの教科書」というとおりVBAの開き方から解説してるのですが網羅度が半端なくて満足感が高いです。(クラスモジュール・ユーザーフォーム・外部データ取り込み・JSON・Power Queryなど)。JSONやPower Queryは最近のExcelでの使用頻度高いかと思うので個人的にポイント高かったです。網羅度が高いゆえに分厚いです。個人的にVBA書でイチオシ。
