Excel

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

既存の機能の代わりにマクロを実行する」の関連になりますが、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関連

    Visual Studio Community 2015でOffice開発する。

    「Microsoft、統合開発環境「Visual Studio 201…

  2. Office アドイン

    [Office用アプリ]仕事の息抜きにピッタリ「もぐらミニ」

    KumaP氏作の作業ウィンドウアプリ「もぐらミニ」がOffice スト…

  3. Office関連

    Computer Vision APIを使って画像から文字列を取得するVBAマクロ

    前々回の記事で、Fiddlerを使ってMicrosoft Cognit…

  4. Office関連

    “元に戻す”履歴に文字列をセットするPowerPointマクロ

    PowerPointマクロでは、Presentationオブジェクトの…

  5. Office関連

    ヘッドレス ChromeをSeleniumBasicで動かしてみました。

    Chromeがヘッドレスモードに対応した頃、Seleniumで操作した…

  6. Office関連

    UI Automationの参考資料

    VBAからUI Automationを扱う際に参考になりそうな資料への…

コメント

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

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

Time limit is exhausted. Please reload CAPTCHA.

※本ページはプロモーションが含まれています。

Translate

最近の記事

アーカイブ

PAGE TOP