【Excel VBA 開発用コード集】Excelにオリジナルのリボンを追加する方法

アフィリエイト広告を利用しています。

Excel にオリジナルのリボン(カスタム UI)を追加するための基本的な実装手順をまとめました。

リボンに独自のメニューを配置し、そこから VBA マクロを実行できるようにすることを目的としています。

VBA アプリケーションに組み込んで使用することを想定しています。

リボン編集ツールを使用してリボンを追加する方法もありますが、この記事ではツールを使用せず、ファイルを直接編集する方法でリボンを追加します。

Information

リボン
Excel 画面上部に表示される、タブ・グループ・ボタンで構成された操作用のユーザーインターフェースです。このリボンには、独自のタブやボタンを追加できます。

Excelにオリジナルのリボンを追加する方法

以下の手順でリボンを追加します。

リボンを追加するExcelの用意

マクロ実行用のExcelファイル(.xlsm)を想定しています。

リボンメニューを追加したいExcelの画像
Excelの拡張子を.zipに変更

Excelの拡張子を.zipに変更します。

Excelの拡張子を.zipに変更している画像
ZIP化したExcelを展開

ZIP化したExcelを右クリックメニューから展開します。

ZIP化したファイルを右クリックメニューから展開している画像
右クリックメニューから展開
展開後の画像
展開後
展開後のフォルダの中身の確認

展開したフォルダの中身は以下のようになっています。

展開後のフォルダの中身の画像
展開後のフォルダの中身
customUIフォルダの追加

展開後のフォルダにcustomUIフォルダを作成します。

customUIフォルダの中にcustomUI.xmlを作成

customUIフォルダの中に、customUI.xmlを作成します。メモ帳で作成して拡張子を.xmlに変更すればよいです。

CustomUI.xmlの中にコードを書く

CustomUI.xmlを開き、以下のコードを記載します。記載したら保存して閉じます。

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
  <ribbon>
    <tabs>
      <tab id="R1_Tab01" label="マイアプリ">
        <group id="R1_Grp01" label="グループ1 ">
          <button id="R1_Btn01"
                  label="実行フォームの表示"
                  onAction="ShowForm1"
                  imageMso="TableInsert"
                  size="large"
                  showImage="true"
                  showLabel="true"/>
        </group>
      </tab>
    </tabs>
  </ribbon>
</customUI>

onAction="ShowForm1" を呼び出し側のマクロで指定する必要があります。後述します。

_rels フォルダを開く
_rels を開くことを指定している画像
_rels フォルダ
_rels フォルダの中身
.rels の編集

.rels を開き、以下のように編集します。編集後のファイルには、custom UI 用の Relationship が追加されています。編集したら保存して閉じます。

【編集前】

<?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"
  />

</Relationships>

【編集後】

<?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"
  />

  <Relationship
    Id="customUI"
    Type="http://schemas.microsoft.com/office/2006/relationships/ui/extensibility"
    Target="customUI/customUI.xml"
  />

</Relationships>
再ZIP化

1階層目のフォルダに戻り、全ファイルを選択し、右クリックメニューからZIP化します。

再ZIP化を説明している画像
再ZIP化
再ZIP化されたファイルの画像
再ZIP化されたファイル
再ZIP化したファイルの拡張子をExcelに戻す

以下のように再ZIP化したファイルの拡張子を.xlsmに戻します。

拡張子をExcelに戻したExcelの画像を

以上でリボンが追加されました。

次に、このリボンから実行されるマクロを登録します。

Excelファイルにコードを記述する

リボンを追加したExcelファイルのVBEから、標準モジュールを挿入し、以下のコードを記述します。

customUI.xml の中の onAction="ShowForm1" で指定した名前をSub名に指定します。

Sub ShowForm1(control As IRibbonControl)

    UserForm1.Show vbModeless

End Sub
マクロから呼び出されるユーザー フォームの作成

以下のようなユーザー フォームを作成しておきます。

ユーザーフォーム作成画面

以上でExcelファイル側の準備は完了です。

次に、リボンが追加されている様子を確認していきます。

リボンを追加したExcelファイルを開く

リボンを追加したExcelファイルを開きます。オリジナルのリボンが追加されていることが確認できます。

リボンが追加されたエクセルファイル
リボンが追加されたExcelファイル
リボンに登録したメニューが動くか確認

リボンに登録したタブを開き、ボタンをクリックします。

リボンに登録したタブを開く画像

ボタンに紐づいているマクロが実行され、以下のフォームが表示されます。

マクロが正常に動き、ユーザーフォームが表示された画像
運営者・ポテ

以上で解説は終了です。

VBAスキルアップの参考情報

近年は、ChatGPTをはじめとするAIの登場によって、学習のスタイルが大きく変わりました。

分からないことがあれば、AIに尋ねれば答えがすぐに見つかる時代です。

とはいえ、AIを使いこなすには、自分自身の基本的な知識や理解力が欠かせません。

全体像をつかむためには、やはり書籍などで体系的に学んでおくことが今でも有効です。

そのうえでAIを活用すれば、自分の理解度に合わせた的確な解説や、応用のヒントを得ることができます。

「学んで基礎を築く → AIで補い発展させる」──このサイクルを重ねることで、VBAスキルは着実に高まっていくでしょう。

VBAのスキルアップ

VBAを学び始めるなら

入門書は、どれを選んでも大きな差はないように感じます。

どれを選ぶかに悩むことに時間をかけるよりも、まずは手頃な一冊を手に取って進めてみるのがおすすめです。

もし迷ったときには、私はインプレス社の「いちばんやさしい」シリーズを選ぶことが多いです。

基礎を超えて力をつけたいなら

私は上級者を目指していましたので、入門書にとどまらず、このような内容の濃い一冊を選んで学んでいました。

今は誰でもAIを活用できる時代になりましたが、上級者を目指す方にとっては、AIをより上手に活用するという意味でも、こうした本は今なお価値があります。

このレベルの本を一冊持っておくことに、損はないでしょう。


資格で能力を証明したいなら

VBAのプログラミング能力を客観的に示したい場合には「VBAエキスパート試験」があります。

特に「スタンダード」の方は上級者向けです。

あなたが社内業務の改善を行う立場であっても、VBAで作成したシステムをお客様に納める立場であっても、この資格は信頼や安心につながるでしょう。

以下の公式テキストが販売されています。



プログラミングの一般教養

「独学プログラマー」というプログラミングの魅力を解説した書籍があります。

これはVBAではなくPythonを題材としていますが、プログラミングの基本的な知識や思考法、仕事の進め方まで幅広く学べます。

今はAIにコードを尋ねれば、答えが返ってくる時代です。

しかし、この本からは「コード」以上に、プログラミングに向き合う姿勢や考え方を学ぶことができるでしょう。


こちらの記事でも紹介しています。もしよろしければご覧ください。

【初心者歓迎】無料相談受付中 

運営者・ポテ

いつもありがとうございます!

限られた時間をより良く使い、日本の生産性を高めたい──

みんなの実用学を運営するソフトデザイン工房では、業務整理や業務改善アプリケーション作成のご相談を承っております。

お気軽にご相談ください。


こちらの記事でも紹介しております。

おわりに

運営者・ポテ

ご覧いただきありがとうございました!

この記事では、「オリジナルリボンを追加する」方法をまとめました。

お問い合わせやご要望がございましたら、「お問い合わせ/ご要望」フォームまたはコメント欄よりお知らせください。

この記事が皆様のお役に立てれば幸いです。

なお、当サイトでは様々な情報を発信しております。よろしければトップページもあわせてご覧ください。

この記事を書いた人

運営者・ポテソフトデザイン工房|日々の業務にちょうどいい自動化を
■人生を追求する凡人 ■日本一安全で、気の向くままに自分の時間を過ごせる、こだわりのキャンプ場を作るのが夢 ■ソフトデザイン工房運営(個人事業者) - 業務改善アプリケーションをご提供 ■人生は時間そのもの。ひとりでも多くの人が「より良い人生にするために時間を使って欲しい」と願い、仕事のスキルの向上、余暇の充実、資産形成を追求。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です