Excel VBAメモ オリジナルなリボンメニューのタブとボタンを追加してみる

VBA

最近用事があって試したのでメモ。

だいたいのポイントとしてはこんな感じ。

  • xlsmファイルの拡張子をzipに変更して展開する
  • リボンメニューの定義をするXMLファイル(xmlファイル)を作成する
  • リレーションシップの定義をするファイル(.relsファイル)を編集する
  • zipファイルに圧縮する
  • 拡張子を元のxlsmに戻す

まずは、Excelファイルのリボンメニューのタブを追加する。

      1. xlsmファイルの拡張子をzipに変更する。
      2. zipファイルを展開する。
      3. リボンメニュー用のファイルを保存しておくフォルダーを作成する。

        今回作成するフォルダーの名前はcustomUIって名前した。
      4. customUIフォルダーにリボンメニューの定義をするXMLファイルを作成する。
        今回作成するファイルの名前はcustomUI.xmlって名前にした。

        作成するファイルの内容はこんな感じ。
        ※呼び出すメソッドはとりあえずClickButtonって名前にしとく。
        <?xml version="1.0" encoding="utf-8" ?>
        <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
        	<ribbon>
        		<tabs>
        			<tab id="ProtoTab" label="タブの名前">
        				<group id="ProtoGroup" label="グループの名前">
        					<button id="ProtoButton" label="ボタン" size="large" imageMso="Help" onAction="ProtoModule.ClickButton" />
        				</group>
        			</tab>
        		</tabs>
        	</ribbon>
        </customUI>
      5. _relsフォルダーにある.relsファイルにcustomXMLファイルの場所を相対パスで追記して保存する。

        修正する内容はこんな感じ。
        ※Hereのコメントがあるすぐ次の1行が追加した行になる
        <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        	<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
        	<Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties" Target="docProps/app.xml"/>
        	<Relationship Id="rId2" Type="http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties" Target="docProps/core.xml"/>
        	<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="xl/workbook.xml"/>
        	<!-- Here -->
        	<Relationship Id="customUIRelID" Type="http://schemas.microsoft.com/office/2006/relationships/ui/extensibility" Target="customUI/customUI.xml"/>
        </Relationships>
      6. zipファイルに圧縮する

        ※Windowsの右クリックメニューで圧縮する場合はファイルの選択位置を
      7. 圧縮したファイルの拡張子をzipからxlsmに変更する。

今回は呼び出すマクロはとりあえずこんな感じにした。
ボタンをクリックするとメッセージダイアログを表示するって動作のはず。

'
' タブのボタンをクリックしたときのイベント
'
Sub ClickButton(control As IRibbonControl)

    MsgBox "ボタンをクリックしちゃった..."

End Sub

で、動作を確認してみる。

ファイルを開くとこんな感じ。
タブが「タブの名前」ってタイトルで追加されとる。

追加したタブを表示するとこんな感じ。
ボタンが「ボタン」って名前で追加されとる。

ボタンをクリックするとこんな感じでメッセージボックスが表示される。

ちなみに作ったファイルはここからダウンロードして…。

RibbonCustomize(2010)

そんなこんなで、メモってことで。