カスタム検索
リボン関連

既存の機能の代わりにマクロを実行する

今回は既存の機能の代わりにマクロを実行する方法を紹介します。

 

1. Office 2007ファイルを開きます。
2. 標準モジュールに下記コードを貼り付けて上書き保存した後、ファイルを閉じます。

Sub Sample(control As IRibbonControl, ByRef cancelDefault)
  MsgBox "Hello."
End Sub
3. Custom UI Editor Toolで2.のファイルを開きます。
4. 下記コードを貼り付け、上書き保存します。
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
  <commands>
    <command idMso="FileSave" onAction="Sample" />
  </commands>
</customUI>

以上で作業は終了です。
4.で保存したファイルを開き、Officeメニューやクイックアクセスツールバーにある「上書き保存」を実行すると、上書き保存される代わりに2.で標準モジュールに記述した「Sample」プロシージャが実行されることが確認できます。

※ 上記のように「command」要素の「onAction」属性にプロシージャ名を入れることで、既存の機能の代わりに指定したマクロを実行させることができます。
※ また、下記コードのようにユーザに問い合わせてから処理をさせるようにすることもできます。

'command要素(idMso値はFileOpen)のonAction属性に「myFileOpen」を指定
Sub myFileOpen(control As IRibbonControl, ByRef cancelDefault)
  If MsgBox("本当にファイルを開きますか?", vbYesNo) = vbYes Then
    cancelDefault = False
  End If
End Sub

idMso値は下記WebページでダウンロードできるExcelファイルを参照してください。

「2007 Office System Document: Lists of Control IDs」
http://www.microsoft.com/downloads/details.aspx?familyid=4329d9e9-4d11-46a5-898d-23e4f331e9ae&displaylang=en