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

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

[Office用アプリ]Office ストアのURLリスト前のページ

[Office用アプリ]アプリ開発コンテストの案内次のページ

関連記事

  1. Office関連

    [リボン・カスタマイズ]アクティブシートにより表示するグループを切り替える。

    Excelで、選択しているシートによって表示するグループを切り替えたい…

  2. Office関連

    リボンのタブを選択するVBAマクロ

    マクロでリボンのタブを選択する方法として、ActivateTabやAc…

  3. Office関連

    蛍光ペンでマークした部分の文字数をカウントするWordマクロ

    Twitterでたまたま下記のツイートを見つけたので、簡単な処理を考え…

  4. Office関連

    「変更履歴とコメントの表示」を設定するWordマクロ

    Microsoft コミュニティに「変更履歴とコメントの表示」オプショ…

  5. リボン関連

    複数のtoggleButton要素の中から1つだけしかオンにできないようにする(2)

    「複数のtoggleButton要素の中から1つだけしかオンにできない…

コメント

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

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

Time limit is exhausted. Please reload CAPTCHA.

最近の記事

アーカイブ

PAGE TOP