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 アドイン

    Office 用アプリの開発資料(日本語)が公開されました。

    Office 用アプリの開発資料(日本語)が公開されました。・…

  2. Excel

    住所から郵便番号を取得するVBAマクロ

    「住所から郵便番号 VBA」といったキーワード検索でのアクセスがあった…

  3. Office関連

    [OneNote]クリップボードから新しいページに貼り付け

    何かをメモするとき、ファイルを保存するとき等々、私はよくOneNote…

  4. Office関連

    Office 365 APIをVBAから呼び出す(2)

    前回の記事ではOffice 365とAzure ADの紐づけを行いまし…

  5. Office関連

    Google Docs APIを使ってGoogle ドキュメントを操作するVBAマクロ

    前回の記事で新しく追加されたGoogle Docs APIを紹介しまし…

コメント

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

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

Time limit is exhausted. Please reload CAPTCHA.

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

Translate

最近の記事

アーカイブ

PAGE TOP