和風スパゲティのレシピ

日本語でコーディングするExcelVBA

マクロのロック(赤帯)を一時的に解除するマクロ

2022年のOfficeアップデートから、↓の警告表示が出るようになりました。

マクロブックのロック


昔の黄色い警告に比べるとIT苦手おじさん職員が何となくマクロを解除してしまう危険がかなり減っていますので、ユーザー目線だと面倒かと思いますが、管理者目線だと前より安心できる仕様なのではないでしょうか。


私も自分が開く分には正直面倒なのですが、
「私のマクロでだけマクロを有効化してもらう」のは前より楽になったので、
この仕様は致し方なしという感想です。



この解除方法は、ローカルのファイルであれば右クリック⇒プロパティからこの設定。
ファイルプロパティのセキュリティ設定


共有サーバーやクラウドストレージのファイルごと許可いしたい場合は、
インターネットオプションの「信頼済みサイト」の設定などで解除できます。


詳しい設定は環境ごとに違う上、今後仕様変更もありそうなためここでは割愛します。



さてこの警告ですが、実もう一つ解除する方法があります。

それが「Workbooks.Openで開く」です。


元々警告が黄色だった時から、マクロで開いたブックはロックがかかりませんでした。

そうでないとApplication.Runなどは使い物になりませんし、
わざわざWorkbooks.Openで指定して開くファイルは、
ユーザーが間違って開いちゃったファイルの可能性は少ないという判断なのでしょう。


よってこの赤帯ロックがどうしても解除できない場合は、
最終手段としてWorkbooks.Openが使えることは覚えておいてください。


そしてこの仕様の簡単な利用方法として、
一時的にこのロックを解除する便利マクロを作ることができます。

それがこちら。

Sub アクティブブックのマクロロックを一時的に解除する()
    
    ' ファイルパスを記憶して閉じる
    Dim wb As Workbook: Set wb = ActiveWorkbook
    Dim ファイルパス As String: ファイルパス = wb.FullName
    
    wb.Close
    
    ' 再度開く(ウィルス対策にOpenイベントは切る)
    Application.EnableEvents = False
    Workbooks.Open ファイルパス
    Application.EnableEvents = True
    
End Sub

コードは単純で、ActiveWorkbookを閉じて、すぐ開くだけです。

Workbooks.Openで開き直すことでマクロが有効になります。


ただし、これを実行したからと言って、
ファイルプロパティのセキュリティ設定
このチェックが有効になるわけではありません。

あくまで開いている間だけマクロが使えるようになるだけです。

メールやチャットでちょっとしたマクロブックをやり取りしていて、
開いている間だけマクロが有効になれば十分なのに、
一度閉じてからプロパティを設定して開き直すのが面倒

と感じている方はご活用ください。


なお、このマクロは個人用マクロブックなどに搭載し、
リボンやツールバーから実行するタイプなのですが、
自社のユーザーに配布などは当然ですがやめましょう。


一応EnableEventsを切ってWorkbook_Openイベントを回避していますし、
もともとAuto_OpenイベントはWorkbooks.Open時は無効なため、
黄色い帯を脳死で解除した時よりははるかにマクロウィルスの危険は少ないですが、
それでもこのマクロを脳死で押すようになったら帯が赤い意味がありません。

わかっている人がわかっている範囲で使う」範囲にとどめて活用してください。