IT仕事

ExcelのリボンUIにボタンを配置して、そのボタンクリックでExcelVBAを実行させたい

投稿日:2016年7月5日 更新日:

それをするには、こんな感じ。

1.Excelマクロで、標準的なやり方でVBAコードを作る。

2.「Custom UI Editor Tool」で1のファイルを開き、リボンを作り、上書き保存する。フォーマットはXMLタグなので、ID名を重複して作らないとか、実行先のVBAのモジュール名やプロシージャ名を大文字小文字間違えずに記述しなくてはならないとか、日本語が化ける(ただしリボン上はきちんと再現されるみたい)とかに気をつけないといけない。

3.1のファイルを開き、リボンの右端にボタンが表示されているのを初めてみた時は、感動するよ。あとは動作確認を繰り返す。

Excelのユーザーフォームを使ってVBAを実行するやり方に比べると、全部コードを手書きしなくてはいけないので(ユーザーフォームはGUIでOK)、すごく手間隙がかかる。しかし、ユーザーサイドで見ると、とっても使いやすくなる、学習しやすくなるであろう。

以下は、補足。

Custom UI Editor Toolをダウンロードするリンクは、これ。
Updated version of the Custom UI Editor Tool – OpenXML Developer – Blog – OpenXML Developer

リボンに使えるボタンアイコンを一覧するには、これ。
ひっじょーに、見にくい。
Office 2010 Add-In: Icons Gallery

ファイルをダウンロードしたあと、バックステージビュー(Office2010でいうファイルメニュー)に切り替えて、下の方に表示されるメニューをクリックすると、一覧が表示される。以下も参考になるかも。
https://mauriceausum.com/2012/04/14/office-2010-icons-gallery-icons-for-your-ribbon/

アイコンボタンの一覧は印刷でもできればよいのだが、できないので使い勝手が悪い。
自分の場合めったに使わないから、きっとこの次使うときは、バックステージビューのことなんて、すっかり忘れているだろう。まあいいけど。

リボン上にテキストボックスを置くときに参考になったリンクはこれ。
リボンメニューのエディットボックスを VBA/マクロから使用する方法: ある SE のつぶやき

2017/8/17(木)追記:
ひさびさに、Custom UI Editor Toolで作ったリボン+Excelマクロのファイルを修正する必要があり、それをしたところ、起動時にリボンが表示されなくなってしまった。
Excelのバージョンが変わったせいだろうか? 当時は2013、今は2017。
原因はわからないけど、もう一度ExcelマクロファイルをCustom UI Editor Toolで開いて、上書き保存したら、今度はうまくリボンが表示されるようになった。

-IT仕事

執筆者:

関連記事

no image

「良さそう」と思ってもらうには4つのポイント

経営を伸ばす視覚伝達デザインの鉄則 : 第4回 「良さそう」と思ってもらうには4つのポイントが必要 (1) 伝えたい情報が伝わっているか (2) 伝えたい世界観が伝わっているか (3) アイデンティテ …

no image

クロネコヤマトの送り状発行ソフトB2で請求先に赤エラーが出てにっちもさっちも

タイトルの通り。数時間悩んだが、結果、何とか分かった。 このブログを見ている諸君は、きっと同じ悩みを抱えてきたのでは? ご請求先顧客コード(たいていは自社の電話番号になっていると思う)と、運賃管理番号 …

no image

イーモバイル製のHTC AriaはIIJ-Mioで使えなかった

オークションで購入したHTC Ariaだが、IIJ-Mioのキャリアでは使えないみたい。 APNを登録したり、色々試してみたのだが、3Gを介したネットにはつながらなかった。 エラーは出ないのにね。 A …

no image

ブログシステム物色

Geeklog インストール難しい、多機能、公式サイトの掲示板に質問すると、2人のモデレーターが親切に答えてくれた。うれしかった。 xaioを使う場合は、php.iniの設定を変えないといけなかった。 …

私はFree Call-to-Action Button Generator (CSS and PNG)が気に入った

CSSでさくっとボタンを作れるWebサービスを探したのだが、なかなか見つからない。 カラーピッカーで選びやすく、グラデーションが使えて、できればアイコン画像を埋め込めて、サイズが自由に変更できて、角丸 …