この記事でわかること。
- Microsoft Publisherのオブジェクトの階層構造がわかる。
- Microsoft Publisher VBAを扱うために必要な初期設定がわかる。
- Microsoft Publisher VBAでテキストを操作する方法がわかる。
PublisherをVBAで操作しよう。
Microsoft Publisher(パブリッシャー)をVBAで操作してみました。
VBAマクロといえばExcelですがPublisherもVBAから操作ができるんですねェ!
VBAマクロで操作するメリット
- 定型作業によっては一撃で作業を完了できる。
- 入力ミスを減らせる。
Microsoft Publisherとは?
Microsoft Publisherは印刷物のデザインデータを作成することができるDTPソフトウェアです。Microsoft 365に含まれているのでMicrosoft365を契約していれば使用することができます。(一部のライセンスには含まれません)
Microsoft PublisherとMicrosoft Wordの違いは?
- WordはRGBカラーモードでしか文書を作成できません。
- Publisherは印刷会社が扱っているCMYKカラーモードで文書を作成できます。
印刷会社はCMYKカラーモードで印刷を行うため、Word文書をそのまま出稿すると色味が変化してしまいます。Publisher文書ならそのまま出稿することができます。
また、Publisherはチラシや名刺などの印刷物の作成時に考慮すべき「余白」のガイドラインがはじめから引かれています。
動画でPublisherの使い方を学ぼう!Publisher VBAを使うための準備 初期設定
Microsoft Publisher(パブリッシャー)でVBAを扱うには2つの事前設定が必要です。
Excel VBAなど他のOffice製品のVBAでもおなじみの作業ですね。
Microsoft Publisher でVBAを扱うための2つの初期設定
- Publisherでマクロの設定を変更しマクロを有効化する。
- Publisherアプリウィンドウのメニュータブに開発タブを表示する。(必須ではないが推奨)
①Publisherでマクロの設定を変更する。
▲Publisheアプリケーションを開き左側メニューの中のオプションをクリックします。(あるいは「メニュー > オプション」の順でクリック)
▲Publisherのオプション画面が開いたら、①左側メニューの中の「アドインセンター」をクリックします。②次に右側の「トラストセンターの設定」をクリックします。
▲トラストセンターが開いたら、①左側メニューの「マクロの設定」をクリック、②マクロ有効化オプションのいずれかを選択し③OKボタンをクリックします。
マクロを利用できるオプションは次の3つのいずれかです。
- 警告を表示してすべてのマクロを無効にする
- デジタル署名されたマクロを除き、すべてのマクロを無効にする
- すべてのマクロを有効にする
- 「警告を表示してすべてのマクロを無効にする」
- マクロを実行しようとすると警告が表示され、実行の有無を問われます。「OK」ボタンを押せばマクロを実行できます。実行のたびに警告が表示されるので手間があります。
- 「デジタル署名されたマクロを除き、すべてのマクロを無効にする」
- デジタル署名を使ってマクロを信頼します。セキュリティを保ったまま、セキュリティの警告ポップアップを表示させることなくマクロを実行することができます。デジタル署名は自分で発行できます。(デジタル署名の発行・設定方法についての記事はこちら)
- 「すべてのマクロを有効にする」
- マクロを無制限に実行できます。悪意のあるマクロも実行されてしまう可能性があるため推奨されません。
今回はテストなので「すべてのマクロを有効・・」に設定します。ビジネスでのおすすめは「デジタル署名・・」です。
以上でマクロの設定は終わりです。引き続き開発タブの設定を行うので「Publisherのオプション」画面は開いたままにしておきます。
②Publisherに開発タブを表示する。
▲①Publisherのオプション画面の左側の「リボンのユーザー設定」をクリックします。②右側のペイン上部の「リボンのユーザー設定」のリストボックスを「メインタブ」にし、③下のボックスの中の開発のチェックをオンにします。④OKボタンをクリックして画面を閉じます。
以上でPublisherでVBAを扱うための初期設定は終わりです。
念の為、マクロの設定を確実に有効にするためにPublisherアプリケーションを再起動します。
これらの操作は1度きりの作業で今後は必要がありません。
Publisherのオブジェクトの階層
パブリッシャーは、オブジェクトが次のような階層構造になっています。
Publisherのオブジェクトは、図のように、Publisherオブジェクト >Documentsコレクション >Pagesコレクション > Shapesコレクションというような階層構造になっています。
各コレクションはオブジェクトの集合で、たとえばPagesコレクションの中にはひとつ、あるいは複数のPageオブジェクトが存在します。
オブジェクトの取得方法
オブジェクトの階層構造を理解したのでオブジェクトを掴む練習をしていきたいと思います。
たとえば「現在開いているPublisherファイルの1ページ目のページオブジェクト」を掴むには下記のように記述します。
ShapesコレクションからShapesオブジェクトをひとつずつ取り出すサンプルコード
マクロを書いてみます。
▲Publisherアプリケーションで適当なドキュメントを開きます。今回わたしは上図のようなサンプルドキュメントを開きました。
マクロを書いていきましょう。マクロを書くためにVBE(VBAマクロを記述するための専用エディタ)を開きます。
VBEの開き方は、「開発 > Visual Basic」の順でクリックします。
ショートカットAlt+F11でも開くことができます。
Sub MyFirstPublisherVBA() Dim MyShapes As shapes Dim MyShape As Shape 'ページ1枚目のShapeをコレクションとしてすべて取得する。 Set MyShapes = ActiveDocument.Pages(1).shapes 'ShapesコレクションからShapeオブジェクトをひとつずつ取り出す。 For Each MyShape In MyShapes 'Shapeオブジェクトの名前をイミディエイトウィンドウに出力する。 Debug.Print MyShape.Name Next End Sub
▲上のコードを書きました。
▲実行結果です。上図の「サンプルPublisherドキュメント」には1つのテキストボックスと2つの図形がありましたが上図のように3つのシェイプの名前を出力することができました。
Publisher VBAのレファレンス
基本は公式レファレンスを参照してください。
https://docs.microsoft.com/ja-jp/office/vba/api/overview/publisher
シェイプのテキストを操作する方法
Publisherでテキストを操作していきましょう。
Publisherでは、テキストはテキストボックス(縦書き・横書き)か、図形の中にテキストを書いていきます。テキストボックスも図形もShapeオブジェクトです。
テキストはShapeオブジェクトのTextFrameオブジェクトの中のTextRangeオブジェクトの中のTextプロパティから操作します。
テキストの取得
たとえば「現在開いているPublisherファイルの1ページ目の1個目のシェイプのテキスト」を掴むには下記のように記述します。
テキストの書き換え
.TextFrame.TextRange.Textプロパティに文字列を代入すればテキストを書き換えることができます。
テキストボックスのテキストを書き換えるサンプルコード
Publisherでテキストを書き換えてみました。
上の図のように3のシェイプを含むページ(pages(1))があります。このオブジェクトの「こんにちは!」を「Hello!!」に書き換えるコードを書いてみました。
Option Explicit Sub replaceText() Dim MyShapes As Shapes Dim MyShape As Shape 'ページ1枚目のShapeをコレクションとしてすべて取得する。 Set MyShapes = ActiveDocument.Pages(1).Shapes 'ShapesコレクションからShapeオブジェクトをひとつずつ取り出す。 For Each MyShape In MyShapes 'Shapeオブジェクトのテキストに”こんにちは”が含まれていたら”Hello!!”に置換する。 If MyShape.TextFrame.TextRange.Text Like "こんにちは*" Then MyShape.TextFrame.TextRange.Text = "Hello!!" End If Next End Sub
マクロ付きPublisherドキュメントを保存する方法は?
Excelの場合、Excelファイルのデフォルトのファイル形式xlsxでファイルを保存するとマクロが保持されません。このためマクロが記述されたExcelファイルをxlsx形式で保存して閉じてから開きなおすとマクロコードは消えてしまいます。マクロを保持したままExcelファイルを保存するには、マクロ専用のxlsm形式でファイルを保存する必要があります。
PublisherをExcelから操作する方法!
Excel VBAからもPublisherを操作することができます。
まとめ
Publisher VBAについて紹介しました!
このブログではRPA・ノーコードツール・VBA/GAS/Pythonを使った業務効率化などについて発信しています。
参考になりましたらブックマーク登録お願いします!
▲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書でイチオシ。
このブログではRPA・ノーコードツール・VBA/GAS/Pythonを使った業務効率化などについて発信しています。
参考になりましたらブックマーク登録お願いします!
▲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書でイチオシ。