[Excel] リボンにカスタムボタンを追加する

2015年7月24日

 Excel 2007 以降で、リボンにカスタムボタンを追加し、そのボタンにマクロを割り当てる方法を以下の記す。

  1. マクロ付きのブックを作ります。ファイル名を仮に Book1.xlsm とします。
  2. Book1.xlsm を Book1.xlsm.zip にファイル名を変更し zip ファイルとしてアクセスできるようにします。
  3. 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 内にあれば順番は問いません。

  4. 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>
    
  5. この customUI.xml がある customUI フォルダ を Book1.xlsm.zip にコピーします。Book1.xlsm.zipcustomUIcustomUI.xml ができていれば OK です。
  6. ファイル名の拡張子を .zip から .xlsm に戻します。
  7. 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つ付いて来るので、それを受ける必要があります。(引数なしのマクロを書くとエラーになります。)

  8. リボンのボタンを押して、指定のマクロが実行できれば OK です。
  9. その他の注意点は以下。





カテゴリー: Excel, Office

Follow comments via the RSS Feed | Leave a comment | Trackback URL

コメントを投稿する

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)


«   »
 
Powered by Wordpress and MySQL. Theme by Shlomi Noach, openark.org