プロが教えるわが家の防犯対策術!

こんにちは

マクロを組み込んだEXCELファイルを開いていますが、
マクロが動いて欲しくない時があります。
そういう場合は一旦閉じてから、マクロを無効にした状態で開き、また閉じて、またマクロを有効にして開くというふうにしています。
他に何か良い方法はありますでしょうか。

A 回答 (3件)

追伸です。



なお、Excel2002以上でしたら、

開くときに、以下のコードで、

Application.AutomationSecurity = msoAutomationSecurityForceDisable 

で、ブックのマクロ全てを使えなくすることは可能です。
    • good
    • 0

ブックを開いたままマクロの有効無効を


切り替えることはできないような気がします。
が、マクロが有効でもコードが実行されないようにすることは可能です。
(正確には、実行されてもコードの先頭でExitする)
パブリックな変数を用意して、この変数のTrue/Falseを切り替えて、
Falseの場合にはプロシージャをExitさせたり、イベントを無効にしたりすればよいかと思います。

たとえば、以下のような感じで・・・。

まず、標準モジュールに

Public Flg As Boolean
Sub test1()
Dim strflg As String
Application.DisplayStatusBar = True
Flg = Not Flg
Application.EnableEvents = Flg
If Flg Then
strflg = "Macro有効"
Else
strflg = "Macro無効"
End If
Application.StatusBar = strflg
End Sub

としておきます。

ブック内の他のプロシージャには

Sub test2()
If Not Flg Then Exit Sub
'
'コード
'
End Sub

のようにしてFlgがFalseのときは
プロシージャの先頭で、Exit Subさせたり、
イベントを無効にすれば良いのではないでしょうか。

このtest1をコマンドバーボタンにでも登録しておいて、
有効/無効を切り替えるようにすれば良いかと思います。
一応、現在の有効/無効の状態がわかりやすいように
ステータスバーに表示するようにしています。
    • good
    • 0

こんばんは。



ご質問の説明が分りにくいのですが、自分が意図していないマクロが働くとしたら、イベント・ドリブン型のマクロのことでしょうか?

もし、そうなら、 Application.EnableEvents = False でよいのではありませんか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!