2012/4/20 追記:クイックアクセスツールバーのメニューを利用する方法に関しての記事も追加しました。
Excel MVPの伊藤さんがご自身のサイト「インストラクターのネタ帳」で”文字のサイズを1ポイント大きくするマクロ“や”行間を1ポイント広くするマクロ“等のPowerPointマクロを紹介されているのを見て、”こういったマクロはホットキー(ショートカットキー)から実行するのが便利なのではないか?“と思い、処理を考えてみました。
VBAマクロをショートカットキーから実行する方法としてすぐに思いつくのはマクロのオプションからキーを割り当てる方法とOnKeyメソッドでキーを割り当てる方法ですが、PowerPointにはどちらも用意されていません。
「Using OfficeOne Shortcut Manager in Microsoft PowerPoint 2007」でも紹介されている「Shortcut Manager for PowerPoint」を使えばPowerPointでもキーの割り当てを行うことができますが、このツールは有料かつ海外製であるため、若干使いづらいところがあります。
(もちろんAPI関数を使えばShortcut Managerで行っているような処理をマクロから実行することができるのですが、こちらも手間が掛かります。)
そこで今回は当ブログでもさんざん紹介している「Mayhem」を使った処理を考えてみます。
- ショートカットキーから実行したいマクロを用意し、アドイン形式(ppa,ppam)で保存します(今回はサンプルとして、下記のコードを「SampleAddIn.ppam」として保存しました)。
- PowerPoint のオプション > アドイン > “PowerPoint アドイン”の設定 からアドインダイアログを表示します(PowerPoint 2010の場合)。
- 新規追加ボタンから1.のアドインファイルを追加し、アドイン名隣のチェックボックスがチェックされていることを確認します。
- 下記コードをメモ帳に貼り付け、vbsファイルとして保存します(今回はサンプルとして、「C:\Test\CallPowerPointMacro.vbs」として保存しました)。
- Mayhemを起動し、「Choose Event」から「Key Press」を選択して「Choose」ボタンをクリックします。
- “Please enter a combination of keys which will activate this event.“というメッセージが表示されたら、マクロを実行したいショートカットキーを押して、「Save」ボタンをクリックします(設定するショートカットキーはPowerPointで標準で設定されているショートカットキーとは重ならないものをお薦めします。PowerPoint 2003 ショートカットキー、プレゼンテーションの作成時に PowerPoint 2010 で使用するショートカット キー、PowerPoint 2010 でプレゼンテーションを発表するときに使用するショートカット キー 参照)。
- 「Choose Reaction」から「Run Program」を選択して「Choose」ボタンをクリックします。
- Run Programダイアログが表示されたら、「File:」欄には4.で保存したvbsファイルを、「Arguments:」欄にはショートカットキーから実行したいマクロを「アドイン名(半角スペース)マクロ名」という形で入力し、「Save」ボタンをクリックします。
- Mayhemの初期画面に戻ったら、スイッチを「ON」にして5.~8.で追加したイベントを有効にします。
Option Explicit Public Sub Macro1() MsgBox "Macro1" End Sub Public Sub Macro2() MsgBox "Macro2" End Sub Public Sub Macro3() MsgBox "Macro3" End Sub
以上でPowerPoint側の準備は終了です。
Option Explicit Dim Args Dim AddInName Dim MacroName Dim AppPP Set Args = WScript.Arguments If Args.Count < 2 Then WScript.Quit AddInName = Args(0) MacroName = Args(1) Set Args = Nothing On Error Resume Next Set AppPP = GetObject(, "PowerPoint.Application") If Not AppPP Is Nothing Then If AppPP.AddIns(AddInName).Loaded = -1 Then AppPP.Run AddInName & "!" & MacroName End If Set AppPP = Nothing End If On Error GoTo 0
以上で作業は終了です。
以降、Mayhemが起動している間は6.で設定したキーを押すことで8.で設定したマクロを実行することができます。
ホットキーの割り当てはMayhemでなくてもできることですが、Mayhemはホットキーの割り当て以外にも様々なことができるツールなので、今回はMayhemを使用することにしました。
この記事へのコメントはありません。