Excel 2007 以降で、リボンにカスタムボタンを追加し、そのボタンにマクロを割り当てる方法を以下の記す。
- マクロ付きのブックを作ります。ファイル名を仮に Book1.xlsm とします。
- Book1.xlsm を Book1.xlsm.zip にファイル名を変更し zip ファイルとしてアクセスできるようにします。
- Book1.xlsm.zip を開き、その中の Book1.xlsm.zip_rels.rels ファイルをローカルにコピー、そして以下のように、マーカーの部分を追記します。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"> <Relationship Id="customUIRelID" Type="http://schemas.microsoft.com/office/2006/relationships/ui/extensibility" Target="customUI/customUI.xml"/> <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"/> </Relationships>
実際のファイルは「<Relationships …> ~ </Relationships>」まで一行で記述されていますが、適宜字下げ、改行を入れても大丈夫です。
また、追記する「<Relationship Id="customUIRelID" ~」も Relationships 内にあれば順番は問いません。 - customUI フォルダをローカルに作成し、その中に customUI.xml を作成します。内容は以下の通りにします。エンコードは UTF-8 で保存します。
<?xml version="1.0" encoding="UTF-8" ?> <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui"> <ribbon> <tabs> <tab id="Tab1" label="タブ1"> <group id="Group1" label="グループ1"> <button id="Button1" label="ボタン1" size="large" imageMso="ImportSharePointList" onAction="Module1.Button1" /> <button id="Button2" label="ボタン2" size="large" imageMso="ExportSharePointList" onAction="Module1.Button2" /> </group> </tab> </tabs> </ribbon> </customUI>
- この customUI.xml がある customUI フォルダ を Book1.xlsm.zip にコピーします。Book1.xlsm.zipcustomUIcustomUI.xml ができていれば OK です。
- ファイル名の拡張子を .zip から .xlsm に戻します。
- Book1.xlsm を開き、ボタンに対応するマクロを記述します。
Sub Button1(rc As IRibbonControl) MsgBox "Button1" End Sub Sub Button2(rc As IRibbonControl) MsgBox "Button2" End Sub
customUI.xml の onAction に指定したマクロを記述します。今回は Module1 に Button1,Button2 の 2つのマクロを記述しています。
注意点としては、リボンのボタンから呼ばれるマクロは、引数に IRibbonControl 型の変数が1つ付いて来るので、それを受ける必要があります。(引数なしのマクロを書くとエラーになります。) - リボンのボタンを押して、指定のマクロが実行できれば OK です。
- その他の注意点は以下。
- imageMso はアイコン画像の名称です。詳しくは"imageMso"でググってください(汗
http://soltechs.net/CustomUI/imageMso01.asp?gal=1&count=no とか総覧できて便利です。 - office 2010 以降の新機能を使う場合は、customUI4.xml という別の xml ファイルを用意する必要があるようです。
- その他、詳しい話は https://msdn.microsoft.com/ja-jp/library/Aa338202(v=office.12).aspx などを参考にします。
- imageMso はアイコン画像の名称です。詳しくは"imageMso"でググってください(汗