Office関連

既存の機能の代わりにマクロを実行する方法をまとめてみました。

既存の機能の代わりにマクロを実行する」の関連になりますが、Officeに元々備わっている機能の代わりに自作のマクロを動作させる方法を色々とまとめてみました。

■ コマンドバーのイベントを使用する方法

コマンド バーのイベントを使用する」にも記載されていますが、クラスモジュールにWithEventsキーワードを使用してオブジェクト変数を宣言することで、既存の機能(イベント)を差し替えることができます。

[ThisDocument(Word)]

Option Explicit

Private WithEvents btnFileOpen As Office.CommandBarButton

Private Sub Document_Open()
  Set btnFileOpen = Application.CommandBars.FindControl(ID:=23)
End Sub

Private Sub btnFileOpen_Click(ByVal Ctrl As Office.CommandBarButton, CancelDefault As Boolean)
  If MsgBox("本当に開きますか?", vbYesNo) = vbNo Then CancelDefault = True
End Sub

ただし、この方法はリボンUIになったOffice 2007以降では使えない場合が多々あるので、その場合は次に説明する”リボンをカスタマイズする方法“を使用することになります。

■ リボンをカスタマイズする方法

既存の機能の代わりにマクロを実行する」で説明している通りですが、リボンをカスタマイズしてcommand要素のonAction属性を指定することで、既存の機能の代わりにマクロを実行することができます。

[標準モジュール]

Option Explicit

Private Sub FileOpen_onAction(control As IRibbonControl, ByRef cancelDefault)
 If MsgBox("本当に開きますか?", vbYesNo) = vbYes Then cancelDefault = False
End Sub

[リボンXML]

<?xml version="1.0" encoding="utf-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
  <commands>
    <command idMso="FileOpen" onAction="FileOpen_onAction" />
  </commands>
</customUI>

■ コマンドマクロを差し替える方法(Word)

Word限定の方法になりますが、Wordに元々備わっているコマンドマクロと同名のプロシージャ―を用意することで機能を差し替えることができます。

[標準モジュール]

Option Explicit

Public Sub FileOpen()
  If MsgBox("本当に開きますか?", vbYesNo) = vbYes Then Application.Dialogs(wdDialogFileOpen).Show
End Sub

上記コードを標準モジュールに記述すると、「開く」コマンドを実行する際、元々のファイルを開くコマンドマクロ「FileOpen」の代わりに上記の処理が実行されます。
この方法は「イベントを使用して Microsoft Word を制御する(組み込みルーチンを置き換える)」にも書かれている方法で、すべての機能を差し替えることができるわけではありませんが、知っていると便利な方法です。
コマンドマクロの名前に関しては下記Webページにある一覧が参考になります。

・Wordの「コマンドマクロ」一覧
http://www.tanimoto.to/comp/WordCommandMacrosList.html
・コマンドマクロ一覧(Word 2013 Customer Preview)
//www.ka-net.org/blog/?p=2194
・コマンドマクロ一覧(Word 2013)
//www.ka-net.org/blog/?p=3746

上記のように、既存の機能の代わりにマクロを実行する方法は色々ありますので、それぞれ必要に応じて使い分けるのが良いだろうと思います。

関連記事

  1. Office関連

    Wordのテンプレートをインストールするスクリプト

    Wordマクロをテンプレートにして使用する場合、通常そのテンプレートフ…

  2. Office関連

    [Office 2016]コマンド検索即実行、便利な「Tell Me」機能

    ※ 下記情報はOffice 2016 Preview版を元にしています…

  3. Office関連

    セルの行数をカウントするWordマクロ

    「ソースコードを番号行付きのテーブルに変換するWordマクロ」を実行し…

  4. リボン関連

    まばたきするリボン

    小ネタです。ボタンをクリックするとリボンがまばたきします。 (…

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

Time limit is exhausted. Please reload CAPTCHA.

最近の記事

アーカイブ

RapidSSL_SEAL-90x50
PAGE TOP