VBAからPowerPointアドインを自作する方法
パワポで作成したVBAを共通化したい!
PowerPointで作成したVBAを異なるスライド間で共通化するため、カスタムアドイン作成を行っていきます。
開発環境
Windows 10 Home
Microsoft 365 PowerPoint (16.0.15330.20196)
Office Ribbon X Editor 1.9.0
パワポアドイン作成のフロー
- VBAを書き、
.pptm
形式で保存 - Office Ribbon X Editorでリボンを作成
- 作成したリボンを
.ppam
形式で保存 - アドインとして読み込み
VBAを記述して.pptm形式で保存
「開発 > Visual Basic」 (またはAlt+F11)からVBAのエディタを開いて、標準モジュールを作成します。
モジュールのオブジェクト名はAddinTest
とでもしておきます。
VBAエディタ
Sub testFunction()
MsgBox "テスト"
End Sub
以上のコードを書いて、addinTest.pptm
という名前で都合のいい場所に保存します。
PowerPoint側での作業は一旦ここまでなので、ウィンドウは閉じておきます。
Office Ribbon X Editor(ORXE)でリボンを作成
fernandreu氏が開発しているOffice Ribbon X Editor(ORXE)を使用してカスタムUIパーツを編集していきます。以下GitHubリンクからアプリケーションをダウンロードしてください。
.NET Frameworkインストーラが推奨されているため、筆者はこちらのパッケージを使ってインストールしています。
インストールが完了したら、ORXEを起動して「Open」から先ほど作成したaddinTest.pptm
を開きます。左カラムにaddinTest.pptm
が読み込まれるので、「右クリック > Insert Office 2010+ Custom UI Part」から.xml
ファイルを作成します。なお、Office 2010以降はOffice2021、Office365を含めすべてOffice2010+で対応できます。詳細は各自GitHubで確認してください[1]
customUI14.xml
というファイルがaddinTest.pptm
ディレクトリ配下に作成されるので、ダブルクリックしてエディタを開きます。ここからは、.xml
ファイルを編集してOfficeFluentリボンをカスタマイズしていきます。
ORXEエディタ
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon>
<tabs>
<tab id="CustomTab" label="カスタムアドイン">
<group id="SampleGroup" label="グループ">
<button id="Button" label="テスト関数" size="large" imageMso="FunctionWizard" onAction="testFunction" />
</group >
</tab>
</tabs>
</ribbon>
</customUI>
以上のコードを書いて「Save」から保存します。PowerPointでaddinTest.pptm
を開いたままだとプロセスエラーが発生するので、PowerPointは落としてから上書き保存してください。
OfficeFluentリボンについての詳細は省きますが、Microsoftの公式記事[2]が役に立ちます。また、.xml
オブジェクトについては Microsoft公式リファレンス[3]、imageMso
変数に渡せるOffice 365アイコンについてはこちらのブログポスト[4]がよくまとまっています。
作成したリボンを.ppam形式で保存
ORXEで上書き保存ができたら、PowerPointで再びaddinTest.pptm
を開きます。
リボンの右端に「カスタムアドイン」という項目が増え、テスト関数が無事表示されているはずです。
VBAからカスタムリボンが作成できた
これでVBAのカスタムリボン化は完了しましたが、このままでは他のファイルでは利用できません。汎用アドインとして利用するため、ファイルを.ppam
形式で保存しましょう。
アドインとして読み込み
.ppam
形式で保存したアドインを読み込みます。「開発 > PowerPointアドイン > 新規追加 > addinTest.ppam」から先ほど作成したアドインを読み込みます。
これで他のファイルでも汎用的に利用できる自作アドインの完成です。新規スライドからでもカスタムアドインにアクセスできるはずです。
よく利用するVBAをカスタムリボン化することで業務効率を上げていきましょう。
Discussion