Mantalog

~ blog of the Mantarou, by the Mantarou, for the Mantarou ~

リボンからマクロを実行するPowerPointアドインを作成する

「PowerPointで使用しているフォントを集計するマクロを作ってみた」で作ったマクロの解説の続きです。
前回はマクロの内部の説明を行いましたが、今回はリボンから実行できるようにする方法です。

参考HP

このHPを参考にさせていただきました。
http://homepage2.nifty.com/suyamsoft/Ribbon/Excel2010/RibbonEditor/

Office Ribbon Editorのダウンロード

Office Ribbon Editorを使用することで、簡単にリボンをカスタマイズするファイルを作成できます。
ということで、下記のサイトからダウンロードしてインストールします。
http://www.leafcreations.org/

インストールはダウンロードした*.exeを実行して、[Next]を選択していけばOKです。

リボンの設定

Office Ribbon Editorを使って、PowerPoint上に表示するリボンの詳細と、ボタンを押したときに実行するマクロを設定します。

  1. Office Ribbon Editorの起動します。
  2. Office Ribbon Editorで、マクロを作ったPowerPointファイルを開きます。
  3. 画面右の[Document Explorer]からファイル名を右クリックして[Add CustomUI]→[Office 2007]を選択します。
    f:id:mantarou-tarou:20140209053151p:plain
  4. [RibbonX12]をダブルクリックします。
  5. 画面中央の[Code]タブにリボンの情報を書き込みます。
    今回は、ボタンを押してマクロを実行する簡単なものなので、画面左の[Toolbox]の[Samples]タブから[Office 2007]→[Custom Ribbon]を選択して、サンプルを入力します。
    f:id:mantarou-tarou:20140209053540p:plain
  6. 入力されたサンプルを参考に、必要な部分を編集します。
    id:ユニークであれば何でもいいはずです。
    label:画面に表示するテキストです。
    buttonのonAction:後で作成するマクロの関数名にします。
    buttonのimageMso:リボンに表示する画像です。こここれを参照して、表示したい画像の名前を設定します。
  7. 保存します。

これで、Office Ribbon Editorでの作業は終了です。[Callbacks]にマクロを書きたいところですが、なぜか保存できないので、これ以降はPowerPointで作業します。

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
	<ribbon startFromScratch="false">
		<tabs>
			<tab id="aggregateTab" label="Aggregate">
				<group id="aggregateGroup" label="Aggregate Font in Use">
					<button id="aggregateButton" label="Aggregate" imageMso="ExportExcel" size="large" onAction="AggregateFontInUse" />
				</group>
			</tab>
		</tabs>
	</ribbon>
</customUI>

ボタンを押したときに実行する関数の作成

  1. リボンの設定を行ったPowerPointのファイルを開きます。
  2. [Alt + F11]でVBEを開きます。
  3. リボンのボタンを押したときに実行する関数を作成します。
    関数名はxmlの"onAction"で設定した名前にします。
    引数は"IRibbonControl"型にします。
Public Sub AggregateFontInUse(control As IRibbonControl)
    Call aggregateFontInUseSub
End Sub

アドインとして保存

  1. "名前を付けて保存"でファイルの種類を"PowerPoint アドイン (*.ppam)"とすれば完成です。