カスタムUI(User Interface)
Microsoft Office パワーポイントで、VBA ( Visual Basic for Applications ) が使えることは知っていましたが、実際に使ったことはありませんでした。
エクセルVBAの場合は、比較的少ないシート上内のデータ処理に使用することが多い為、シートに直接コマンドボタンを配置しプログラムを起動しても特に問題を感じませんでした。
パワーポイントの場合、スライド数が多く、スライド上にコマンドボタンを配置すると、プログラム起動時にスライドを探す必要があると考え、カスタムUI を検討することにしました。
もともとエクセル等のMicrosoft Office アプリケーションは、次の図の様に “リボン” 領域の幾つかの “タブ” 上に、様々な処理を実行するコマンドボタンなどが配置されています。
今回は、 専用タブを作成し、 VBAプログラム等を実行するコマンドボタン等を配置してみます。
office-custom-ui-editor 設定
Office アプリケーションのファイルは、実は zip ファイル形式のファイルで、拡張子を “.zip” に変更・展開すれば、構成ファイルを確認できることを今回知りました。
構成ファイルの追加・修正でカスタムUIを作成できる様ですが、理解に時間がかかりそうなので、今回は“office-custom-ui-editor” なるものを使います。
次のサイトから、ZIP ファイルをダウンロードします。
https://github.com/OfficeDev/office-custom-ui-editor
ダウンロードした ZIP ファイルを展開すると、“setup.exe” がありますが、ネット調査では、実行してもインストールに失敗する場合が多い様に感じました。実際に 私も 失敗しました。
失敗時は、下記フォルダー下の “.deploy” がついたファイルの “.deploy” 部(赤色)を削除します。(ファイル名変更)
“.deploy” 部削除後 “CustomUIEditor.exe” をダブルクリックし、プログラムを実行すると下記の通り、プログラムが起動します。
これでカスタムUIの編集が出来る様になりました。
XMLファイル編集
オフィスの “リボン” 領域は、XML なる記述方法で表現される様です。XML は、タグで囲んで構造を表現する言語マークアップ言語の一つとのことです。
“リボン” 領域のカスタムUI部のXMLファイルを編集する為に、 “office-custom-ui-editor” を使用します。
パワーポイントやエクセル等の既存オフィスファイルを編集するので、今回はパワーポイントファイルを新規作成後、保存して一旦閉じます。このとき、VBAを使う前提で、マクロ有効プレゼンテーション(*.pptm)として保存します。
“office-custom-ui-editor” で保存したファイルを開きます。
新規作成ファイルの場合、次の通りXML 記述はありません。
編集領域にXML を記述、保存します。(下図)
記述したXMLは次の通りです。
<?xml version="1.0" encoding="utf-8"?> <customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui"> <ribbon startFromScratch="false"> <tabs> <tab id="tab01" visible="true" label="MyCustomTab"> <group id="gro01" insertBeforeMso="GroupFont" label="grp01"> <button id="btn01" label="Test" imageMso="HappyFace" size="large" onAction="DispMsg" /> </group> </tab> </tabs> </ribbon> </customUI>
パワーポイントファイルを開くと、カスタムタブとボタンが追加されています。
VBAプログラム
XML の7行目 [ onAction=”DispMsg” ] によって、VBAプログラムとリンクしています。 パワーポイントVBEを開き、標準モジュールを作成し、下記コードを記述します。
Option Explicit
Public Sub DispMsg()
MsgBox "カスタムUIテスト", vbOKOnly, "カスタムUIテスト"
End Sub
カスタムタブのボタンをクリックすると、VBAプログラムの関数 “DispMsg” が実行されます。
まとめ
次回はもう少し使い方を調査したいと思っています。
スペース半角/全角など、外観上判りにくい入力不備でも機能しなくなることがあるので、バックアップをとるなどの対応も必要と感じました。