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

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

この記事でわかること。

  • Excel VBAからPublisherを操作する基本的なことがわかる。
目次

Excel VBAからPublisherを操作したい。

【事前設定】ExcelからPublisherライブラリを参照設定する。

ライブラリの参照設定は必須ではありませんが、やっておいて方がコードの入力補完が有効になりますし、詳細なエラーがでるのでデバッグしやすい等のメリットがあるのでやっておくことをおすすめします。

STEP
VBEを開きます。

Excelを起動したらショートカットキーAlt+F11を押してVBAのEditor(VBE)を開きます。初めてExcelでマクロを作成する方は下記の事前設定(マクロのセキュリティ設定)が必要な場合があるので確認してください。

STEP
「ツール > 参照設定」をクリックします。
STEP
「Microsoft Publisher **.* Object Library」をクリックします。

▲「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時短・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をコピーしました!
目次
閉じる