アプリ独自リボンを追加
「Access VBA リボン カスタマイズ」等のキーワードで私もいろいろ調べましたが、あまり分かりやすいサイトは見つかりませんでした。
そこで、備忘録を兼ねて解説したいと思います。
「リボン」は、Office 2007から採用されたもので、従来のサブメニューとツールバーを合体させたものです。
私も含めOfficeを2003以前から使われていた人は、2007でこのリボンに変わり、自分が使いたい機能がどこに行ってしまったのか分からず、苦労された方も多いのではないでしょうか。(私もそうでした)
前回の記事で紹介した「商品管理」アプリにも独自リボンを追加しています。

まず、USysRibbonsというシステムテーブルを作成します。
システムテーブルは普段非表示になっているので、表示させる必要があります。
この部分の詳しい手順は、マイクロソフトの「リボンをカスタマイズする」にあります。
次に、このテーブルのRibbonXMLフィールドにXML文を記述します。
先述のサイトにもある程度XML文についての説明やサンプルがありますが、VBAモジュールとの対応などもっと詳しく説明した日本語サイトが無く、探していたら、英語サイトが見つかりました。
文全体がcustomUIタグでくくられ、その子供がribbonタグで、その子供がtabsタグで、その中にtab id、group id、button idタグが入れ子になっています。
tab idタグのlabel=で指定している文字列が新しいタブの名前です。
私のソフトでは、「マスター管理」と「設定」がそれになります。
タブの中を仕切ってグループを複数作れます。
group idタグのlabel=の部分がグループ名となります。
「マスター管理」タブの中に「仕入先」と「商品分類」のグループを作りました。
button idタグの中のlabel=がボタン名で、imageMso=がアイコンの名前(種類)です。
そしてbutton id=で指定されている文字列が、VBAの標準モジュールのMyButtonCallbackOnActionプロシージャの中で記述されているSelect Case文の各Caseで指定されている文字列と対応します。
ボタンをクリックするとそのCaseの命令が実行されるわけです。
従ってtab id、group id、button idに重複は許されません。
最後にアイコンの名前ですが、何でもよいわけではなく、存在するアイコンの名前を指定する必要があります。
2007 Office System Add-In: Icons Galleryからダウンロードし実行すると、C:\2007 Office System Developer Resources\2007OfficeIconsGalleryにOffice2007IconsGallery.xlsmが作成されます。
そのExcelファイルを開き、開発タブをクリックするとGallery 1~9までのアイコンがあります。1~3までは普通サイズ、4以降はスモールサイズのアイコンです。
好きなアイコンをマウスポイントするとそのアイコンの名称が表示されるので、それを先のXML文のimageMso=で指定します。
以上で一応完成ですが、補足情報として、VBAのコードを実行させるのではなくOffice標準のコマンドを実行させたい場合は、
2007 Office System Document: Lists of Control IDsからダウンロードし展開すると、複数のExcelファイルができますが、AccessRibbonControls.xlsxを開くと英語ですが各コマンドの記述法が表になっています。
(やはりソフト開発にはある程度の英語力が必要ですね)
そこで、備忘録を兼ねて解説したいと思います。
「リボン」は、Office 2007から採用されたもので、従来のサブメニューとツールバーを合体させたものです。
私も含めOfficeを2003以前から使われていた人は、2007でこのリボンに変わり、自分が使いたい機能がどこに行ってしまったのか分からず、苦労された方も多いのではないでしょうか。(私もそうでした)
前回の記事で紹介した「商品管理」アプリにも独自リボンを追加しています。

まず、USysRibbonsというシステムテーブルを作成します。
システムテーブルは普段非表示になっているので、表示させる必要があります。
この部分の詳しい手順は、マイクロソフトの「リボンをカスタマイズする」にあります。
次に、このテーブルのRibbonXMLフィールドにXML文を記述します。
先述のサイトにもある程度XML文についての説明やサンプルがありますが、VBAモジュールとの対応などもっと詳しく説明した日本語サイトが無く、探していたら、英語サイトが見つかりました。
文全体がcustomUIタグでくくられ、その子供がribbonタグで、その子供がtabsタグで、その中にtab id、group id、button idタグが入れ子になっています。
tab idタグのlabel=で指定している文字列が新しいタブの名前です。
私のソフトでは、「マスター管理」と「設定」がそれになります。
タブの中を仕切ってグループを複数作れます。
group idタグのlabel=の部分がグループ名となります。
「マスター管理」タブの中に「仕入先」と「商品分類」のグループを作りました。
button idタグの中のlabel=がボタン名で、imageMso=がアイコンの名前(種類)です。
そしてbutton id=で指定されている文字列が、VBAの標準モジュールのMyButtonCallbackOnActionプロシージャの中で記述されているSelect Case文の各Caseで指定されている文字列と対応します。
ボタンをクリックするとそのCaseの命令が実行されるわけです。
従ってtab id、group id、button idに重複は許されません。
最後にアイコンの名前ですが、何でもよいわけではなく、存在するアイコンの名前を指定する必要があります。
2007 Office System Add-In: Icons Galleryからダウンロードし実行すると、C:\2007 Office System Developer Resources\2007OfficeIconsGalleryにOffice2007IconsGallery.xlsmが作成されます。
そのExcelファイルを開き、開発タブをクリックするとGallery 1~9までのアイコンがあります。1~3までは普通サイズ、4以降はスモールサイズのアイコンです。
好きなアイコンをマウスポイントするとそのアイコンの名称が表示されるので、それを先のXML文のimageMso=で指定します。
以上で一応完成ですが、補足情報として、VBAのコードを実行させるのではなくOffice標準のコマンドを実行させたい場合は、
2007 Office System Document: Lists of Control IDsからダウンロードし展開すると、複数のExcelファイルができますが、AccessRibbonControls.xlsxを開くと英語ですが各コマンドの記述法が表になっています。
(やはりソフト開発にはある程度の英語力が必要ですね)
スポンサーサイト