Office2007から、メニューがなくなり、代わりにリボンが導入されました。
これまで独自に作成したメニューは、アドインというタブにまとめて表示されます。
そこで、Office2007以降のリボンのカスタマイズ方法を紹介します。
ここでは、Office 2007のExcelを使用して、リボンにボタンを追加する方法を説明します。
また、今回の方法は、そのままPower Pointでも使用できる内容になっています。
なお、ここで作成するアドインは、Office2010のExcelおよびPower Pointで動作することを確認しています。
いろんなサイトでリボンのカスタマイズ方法を紹介していますが、大抵が別のソフトウェアをインストールすることが前提になっています。今回はソフトウェアをインストールせずにリボンをカスタマイズします。
今回、参考にしたサイトはこちらです。
エクセル研究室 リボンのカスタイマイズ方法
Office 2007/2010・リボンのカスタマイズ 初心者備忘録 Custom UI Editor Toolの弱点
前提条件 |
PowerPoint 2007, 2010
カスタマイズしたリボンの大まかな仕様 |
・ボタンの画像は、特定のフォルダに配置した画像を使用する。
・ボタンをクリックすると、特定のフォルダに配置した画像をクリップボードへコピーする。
1.リボンのUI設定 |
はじめに、Excelを起動して、マクロ有効ブック(XLSM)ファイル(以降、TestRBN.xlsm)を作成してください。
次に、作成したTestRBN.xlsmをzipファイルとしてリネームします。(TestRBN.xlsm -> TestRBN.xlsm.zip)
リネーム (TestRBN.xlsm -> TestRBN.xlsm.zip) |
なお、zipファイルを開くと以下の構成になります。
TestRBN.xlsm.zipのファイル構成 |
Office2007以降のファイルフォーマットは、Office Open XML形式を採用しており、XMLで記述した文書と画像などのバイナリ情報をZIPでパッケージングするようになりました。
参考サイト
http://www.atmarkit.co.jp/fwin2k/operation/office2007format/office2007format_01.html
http://mitsutakauomi.com/?p=362
http://sevenzip.sourceforge.jp/howto/xlsx-pptx-re-compress.html
さて、これで準備が整いました。次は、いよいよUIの設定作業になります。
UIの設定では、以下の2つを行います。
- /_rels/.rels ファイルの修正
- customUIファイルの追加
1-1./_rels/.rels ファイルの修正 |
「TestRBN.xlsm.zip」の「_rels」フォルダにある、.relsファイルを適当なフォルダへドロップします。
.relsファイルの取得 |
ドロップしたファイルをテキストエディタで開き、以下の場所にXMLを追記します。
追加するXML
<Relationship Id="customUIRelID" Type="http://schemas.microsoft.com/office/2006/relationships/ui/extensibility" Target="/customUI/customUI.xml" />
.relsファイルの修正 |
「TestRBN.xlsm.zip」の元のフォルダへ配置して上書きします。
.relsファイルの配置(上書き) |
1-2.customUIファイルの追加 |
リボンをカスタマイズするUI設定を記述したXMLファイルを作成します。
ここではXMLファイルの名前を「customUI.xml」とします。
(上記.relsのTarget属性に記述したxmlの名前で作成します。)
customUI.xml |
customUI.xmlの中身は以下の通り。
<?xml version="1.0" encoding="utf-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon>
<tabs>
<tab id="hogeID" label="テストタブ">
<group id="TestGroupId" label="画像のコピー">
<button id="Button1" size="large" label="夏目漱石" getImage="Button_GetImage" onAction="TestCopyImage" />
</group>
</tab>
</tabs>
</ribbon>
</customUI>
今回はボタンのため、Buttonタグを追加しました。各属性については、以下の通り。
- ID属性
- グループタグ内で一意の文字列を表します。
- size属性
- ボタンのサイズを表します。(largeは大きいボタン、normalは小さいボタン)
- label属性
- ボタンのラベルを表します。
- getImage属性
- ボタンの画像を設定するコールバック関数です。詳細は後ほど記述します。
- onAction属性
- ボタンクリック後に実行する関数です。詳細は後ほど記述します。
次に、「customUI.xml」を配置したcustomUIフォルダを「TestRBN.xlsm.zip」のルート上に配置します。
customUIフォルダの配置 |
最後に、リネームした「TestRBN.xlsm.zip」を元の名前「TestRBN.xlsm」に戻します。
リネーム (TestRBN.xlsm <- TestRBN.xlsm.zip) |
以上でリボンのUI設定は完了です。
2.マクロの追加 |
「TestRBN.xlsm」をExcelで開いて、VBE(Visual Basic Editor)を開きます。
モジュールに以下の関数を追加します。
Visual Basic Editor |
Option Explicit
Private Const C_NAME_RIBBON_IMAGE_32 As String = "1000yen_32.bmp"
Private Const C_NAME_COPY_FILE As String = "1000yen.bmp"
Private Const C_FOLDER_NAME_IMAGE As String = "img"
Private Const C_ADDIN_NAME As String = "TestRBN"
Public Sub Button_GetImage(control As IRibbonControl, ByRef image)
Dim addinPath As String
addinPath = Application.AddIns(C_ADDIN_NAME).path
Select Case control.Id
Case Is = "Button1"
Set image = LoadPicture(addinPath & "\" & C_FOLDER_NAME_IMAGE & "\" & C_NAME_RIBBON_IMAGE_32)
End Select
End Sub
Public Sub TestCopyImage(control As IRibbonControl)
Dim AP As Object
Dim WB As Object
Dim WS As Object
Dim SP As Object
Dim fldrPath As String
Dim filePath As String
fldrPath = Application.AddIns(C_ADDIN_NAME).path & "\" & C_FOLDER_NAME_IMAGE
filePath = fldrPath & "\" & C_NAME_COPY_FILE
Set AP = CreateObject("Excel.Application")
Set WB = AP.Workbooks.Add
Set WS = WB.Worksheets(1)
Set SP = WS.Shapes.AddPicture(filePath, True, True, 0, 0, 0, 0)
SP.ScaleHeight 1, msoTrue
SP.ScaleWidth 1, msoTrue
SP.Copy
WB.Close SaveChanges:=False
Set SP = Nothing
Set WS = Nothing
Set WB = Nothing
Set AP = Nothing
End Sub
【補足】
セパレータがバックスラッシュになっていますが、コピペすれば円マークになります。(汗)
Button_GetImage関数は、リボンのボタンの画像を設定するときに呼ばれるコールバック関数です。
この関数では、Addinフォルダにある画像ファイル(/img/1000yen_32.bmp)を読み込みます。
TestCopyImage関数は、リボンのボタンが押下されたときに呼ばれる関数です。
この関数では、Addinフォルダにある画像ファイル(img/1000yen.bmp)をクリップボードへコピーします。
次に、Excelアドイン形式(.xlam)で保存します。
保存場所はAddinフォルダです。
Excelアドイン形式(xlamx) |
C:\Users\ユーザ名\AppData\Roaming\Microsoft\AddIns
次に、ボタン画像を配置します。
ここでは、アドインファイルを配置したAddinフォルダに以下のファイルを配置します。
画像ファイル |
/img
/img/1000yen.bmp ← クリップボードへコピーする画像
/img/1000yen_32.bmp ← リボンのボタン画像
ボタン画像の大きさは、size属性がlargeの場合32×32、normalの場合16×16がよいです。
以上でリボンのカスタマイズは完了です。
完成 |
Excelアドインのリボン |
なお、今回のリボンのカスタマイズは、PowerPointでも、同じUI設定およびマクロでアドインを開発することができます。
Power Pointアドインのリボン |
その他 |
夏目漱石を野口英夫に直すのがめんどくさいのでこのままにしておきます。
あしからず。。。
以上
0 件のコメント:
コメントを投稿