
「Excel – VBA」VBAプロジェクトのロック(保護)を解除されたらログを残す方法
Excel でマクロファイルを作成後、勝手にいじられると困るのでVBAプロジェクトのロック(保護)をかけます。それでもルールを守らず強引にパスワード解析などをする社内ハッカーがいたりします
業務評価にログを添付して、解雇事由に使うこともございます。参考になれば幸いです
まずはVBAプロジェクトのロック(保護)の手順をおさらいします
「Alt + F11」 を押してVBAProjectウィンドウを開きます
「ツールタブ – VBAProjectのプロパティ」 の順に選択してプロジェクトプロパティを開きます

プロジェクトプロパティの「保護タブ」を選択して、「プロジェクトを表示用にロックする」へ
をいれます「パスワードと、パスワードの確認入力」へパスワード(同じもの)を入力してOKボタンをクリックします

これでブックを保存し閉じると、以降はブックを開きVBAProjectウィンドウを開こうとするとパスワードを求められます
今回は、この設定したロック(保護)を何かしらの方法で解除された場合にログを残す方法を説明いたします
まずはログファイルを用意してください。サンプルVBAコードと一致させるために「log.txt」を用意いただければと存じます
ログファイルを作成しましたら「Alt + F11」 を押してVBAProjectウィンドウを開きます
ThisWorkbookに以下をコピーしてください。右上のアイコンをクリックしてコピー
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim userName As String '変数userNameを文字列型で宣言
userName = Environ$("USERNAME") 'ユーザー名を取得
On Error Resume Next
'エラー非表示(ログ保存先がネットワーク上の時は、オフライン時にエラー表示されるため)
If ThisWorkbook.VBProject.Protection <> 1 Then
'プロジェクトが保護されていない場合、ログを残す
Open "ここにディレクトリを書いてください\log.txt" For Append As #1 '開くログファイルを指定
Print #1, userName & "がVBAプロジェクト保護を解除をしてからブックを閉じました。日時:" & Now 'ログファイルに書き込む文字列
Close #1 'ログファイルを閉じる
End If
End Sub
11行目の「ここにディレクトリを書いてください」の箇所を、実際のログファイル保存場所に書き換えてください
VBAコードを入力しましたらブックを保存してください
完了です
これでログファイルにログが書き込まれるようになりましたので、試しにVBAプロジェクトのロック(保護)パスワードを入力解除してVBAプロジェクトを開いてからブックを閉じてみてください(保存してもしなくても)
サンプルのVBAコードはネットワーク上にログファイルを置くこと想定しておりますが、PCローカルでもネットワーク上でもログファイルを置く場所はどちらでも動作します
いかがでしたでしょうか。一助になれば幸いです