デスクワークを超絶快適にするおすすめギアたち

【超初心者向け】Microsoft PublisherをVBAで操作する!

【当サイトはプロモーションを含んでいます】

この記事でわかること。

  • 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の違いは?

Publisherは印刷物の作成に特化しています。

  • WordはRGBカラーモードでしか文書を作成できません。
  • Publisherは印刷会社が扱っているCMYKカラーモードで文書を作成できます。

印刷会社はCMYKカラーモードで印刷を行うため、Word文書をそのまま出稿すると色味が変化してしまいます。Publisher文書ならそのまま出稿することができます。

また、Publisherはチラシや名刺などの印刷物の作成時に考慮すべき「余白」のガイドラインがはじめから引かれています。

動画でPublisherの使い方を学ぼう!

Publisher VBAを使うための準備 初期設定

じょじお

Microsoft Publisher(パブリッシャー)でVBAを扱うには2つの事前設定が必要です。

ぽこがみさま

Excel VBAなど他のOffice製品のVBAでもおなじみの作業ですね。

Microsoft Publisher でVBAを扱うための2つの初期設定

  1. Publisherでマクロの設定を変更しマクロを有効化する。
  2. Publisherアプリウィンドウのメニュータブに開発タブを表示する。(必須ではないが推奨)

①Publisherでマクロの設定を変更する。

STEP
Excelのオプションを開きます。

▲Publisheアプリケーションを開き左側メニューの中のオプションをクリックします。(あるいは「メニュー > オプション」の順でクリック)

STEP
トラストセンターを開きます。

▲Publisherのオプション画面が開いたら、①左側メニューの中の「アドインセンター」をクリックします。②次に右側の「トラストセンターの設定」をクリックします。

STEP
マクロの設定を変更します。

▲トラストセンターが開いたら、①左側メニューの「マクロの設定」をクリック、②マクロ有効化オプションのいずれかを選択し③OKボタンをクリックします。

マクロを利用できるオプションは次の3つのいずれかです。

  • 警告を表示してすべてのマクロを無効にする
  • デジタル署名されたマクロを除き、すべてのマクロを無効にする
  • すべてのマクロを有効にする
  • 「警告を表示してすべてのマクロを無効にする」
    • マクロを実行しようとすると警告が表示され、実行の有無を問われます。「OK」ボタンを押せばマクロを実行できます。実行のたびに警告が表示されるので手間があります。
  • 「デジタル署名されたマクロを除き、すべてのマクロを無効にする」
  • 「すべてのマクロを有効にする」
    • マクロを無制限に実行できます。悪意のあるマクロも実行されてしまう可能性があるため推奨されません。
ぽこがみさま

今回はテストなので「すべてのマクロを有効・・」に設定します。ビジネスでのおすすめは「デジタル署名・・」です。

以上でマクロの設定は終わりです。引き続き開発タブの設定を行うので「Publisherのオプション」画面は開いたままにしておきます。

②Publisherに開発タブを表示する。

STEP
リボンのユーザー設定を開き、開発タブにチェックを入れます。

▲①Publisherのオプション画面の左側の「リボンのユーザー設定」をクリックします。②右側のペイン上部の「リボンのユーザー設定」のリストボックスを「メインタブ」にし、③下のボックスの中の開発のチェックをオンにします。④OKボタンをクリックして画面を閉じます。

STEP
開発タブが表示されます。
STEP
設定完了です。念のためPublisherアプリを再起動します。

以上でPublisherでVBAを扱うための初期設定は終わりです。

念の為、マクロの設定を確実に有効にするためにPublisherアプリケーションを再起動します。

これらの操作は1度きりの作業で今後は必要がありません。

Publisherのオブジェクトの階層

ぽこがみさま

パブリッシャーは、オブジェクトが次のような階層構造になっています。

サンプルPublisherドキュメント

Publisherのオブジェクトは、図のように、Publisherオブジェクト >Documentsコレクション >Pagesコレクション > Shapesコレクションというような階層構造になっています。

Publisherオブジェクト > Documentsコレクション > Pagesコレクション > Shapesコレクション

各コレクションはオブジェクトの集合で、たとえばPagesコレクションの中にはひとつ、あるいは複数のPageオブジェクトが存在します。

オブジェクトの取得方法

オブジェクトの階層構造を理解したのでオブジェクトを掴む練習をしていきたいと思います。

たとえば「現在開いているPublisherファイルの1ページ目のページオブジェクト」を掴むには下記のように記述します。

ActiveDocument.Pages(1)

ShapesコレクションからShapesオブジェクトをひとつずつ取り出すサンプルコード

じょじお

マクロを書いてみます。

STEP
Publisherドキュメントを開きます。

▲Publisherアプリケーションで適当なドキュメントを開きます。今回わたしは上図のようなサンプルドキュメントを開きました。

STEP
VBEを開きます。

マクロを書いていきましょう。マクロを書くためにVBE(VBAマクロを記述するための専用エディタ)を開きます。

VBEの開き方は、「開発 > Visual Basic」の順でクリックします。

ショートカットAlt+F11でも開くことができます。

STEP
VBAでマクロコードを書きます。
  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

▲上のコードを書きました。

STEP
マクロを実行します。
実行結果のイミディエイトウィンドウ

▲実行結果です。上図の「サンプル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個目のシェイプのテキスト」を掴むには下記のように記述します。

ActiveDocument.Pages(1).Shapes(1).TextFrame.TextRange.Text

テキストの書き換え

ActiveDocument.Pages(1).Shapes(1).TextFrame.TextRange.Text = “おめでとうございます!”

.TextFrame.TextRange.Textプロパティに文字列を代入すればテキストを書き換えることができます。

ワードアートで表現されたテキストは.TextFrame.TextRange.Textプロパティから取得したり変更することはできません。ワードアートはテキストではなく画像だからです。

テキストボックスのテキストを書き換えるサンプルコード

じょじお

Publisherでテキストを書き換えてみました。

VBAで置換前のパブリッシャーファイル
VBAで置換後のパブリッシャーファイル

上の図のように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の場合、マクロが記述されたPublisherドキュメントもデフォルトの.pub形式で保存すればOKです。マクロが保持されます。

PublisherをExcelから操作する方法!

じょじお

Excel VBAからもPublisherを操作することができます。

まとめ

じょじお

Publisher VBAについて紹介しました!

ぽこがみさま

このブログではRPA・ノーコードツール・VBA/GAS/Pythonを使った業務効率化などについて発信しています。
参考になりましたらブックマーク登録お願いします!

Excel時短・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書でイチオシ。

ぽこがみさま

このブログではRPA・ノーコードツール・VBA/GAS/Pythonを使った業務効率化などについて発信しています。
参考になりましたらブックマーク登録お願いします!

Excel時短・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書でイチオシ。

お役に立てたらシェアお願いします!
  • URLをコピーしました!
  • URLをコピーしました!
目次