• ベストアンサー

個人用マクロブックのマクロを特定ファイルで適用除外

エクセル2010を使っている者です。 個人用マクロブックにマクロを登録し、ショートカットキーの割り当ても行いました。 しかし、特定のファイルでのみ、そのショートカットキーの適用を除外して、 そのファイルに設定したマクロをそのキーに割り当てたいと思っているのですが、 可能でしょうか? よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • oka_me
  • ベストアンサー率86% (26/30)
回答No.2

申し訳ありません、補足です。。 OnKeyメソッドの場合、該当ブックを閉じてもエクセルを一旦終了させるまでショートカットキーがブックで設定した内容がそのまま有効になってしまうようです。 その為ショートカットを元に戻したい場合は面倒ですが一旦エクセル自体を終了させる必要があります。 もしくは該当ブックのThisworkbookモジュール内に追加で Private Sub Workbook_BeforeClose(Cancel As Boolean) Application.OnKey "^u" End Sub と入れる方法でも良いかもしれません。 (マクロ名を外すことでショートカットの適用が解除されます) MacroOptionsでも試しましたがこちらはマクロのダイアログをVBAで書き換えるというメソッドの為、個人用マクロブックと同じショートカットキーには出来ないようでしたm(_ _)m

qazxcvfr4
質問者

お礼

ありがとうございました。

その他の回答 (2)

回答No.3

私も、久々に、こんなマクロを考えてみました。 PERSONAL.XLSBに登録します。 'Class1モジュール Private WithEvents NewApp As Application Public Property Set myNewApp(ByVal myApp As Application)  Set NewApp = myApp 'セキュリティを考えて、カプセル化しました。 End Property Private Sub NewApp_WorkbookActivate(ByVal Wb As Workbook) If StrConv(Wb.Name, vbUpperCase) Like "AB*" Then 'ファイル名にABとついたものだけ、マクロ1にする  Application.OnKey "^g", "myMacro1" 'マクロ1 Else  Application.OnKey "^g", "myMacro2" 'マクロ2 End If End Sub '標準モジュール: Public myClass As Class1 Sub Auto_Open()   Set myClass = New Class1   Set myClass.myNewApp = Excel.Application End Sub Public Sub myMacro1()   MsgBox "Date: " & Date '特定のブックでは、日付 End Sub Public Sub myMacro2()   MsgBox "Time: " & Time '普通のブックでは、時間 End Sub

qazxcvfr4
質問者

お礼

プログラムを作っていただき、ありがとうございます。 勉強します。

  • oka_me
  • ベストアンサー率86% (26/30)
回答No.1

もしかしたらエクセルのバージョン等の環境によって違ってくるかもしれないですが、当方のエクセル2007では除外したいファイルにApplication.Onkey等を割り当てておくことで個人用マクロブックの適用は除外されました。 例えばCtrl+uを割り当てたいのであれば、以下の様なコードを対象ファイルのThisworkbookモジュール内に記述します。 Private Sub Workbook_Open() Application.OnKey "^{u}", "Macro1" 'Ctrl+uでMacro1を呼び出し End Sub ~Onkeyの他にもMacroOptionsというメソッドもあるようです。。 http://www.moug.net/tech/exvba/0150112.html

qazxcvfr4
質問者

お礼

遅くなって申し訳ありません。 プログラムを別に書かないといけないわけですね。 勉強になりました。

関連するQ&A