BOOGALOOメニュー
おしゃれな憩いの場・コミュニティサイトのnanini
nanani | 憩いの場・コミュニティサイトはこちら

「Excel – VBA」VBAプロジェクトのロック(保護)を解除されたらログを残す方法

Excel でマクロファイルを作成後、勝手にいじられると困るのでVBAプロジェクトのロック(保護)をかけます。それでもルールを守らず強引にパスワード解析などをする社内ハッカーがいたりします

そんな時のために、VBAプロジェクトのロック(保護)を勝手に解除する者の名前と日時をログに残す方法を教えます

業務評価にログを添付して、解雇事由に使うこともございます。参考になれば幸いです

まずはVBAプロジェクトのロック(保護)の手順をおさらいします

「Alt + F11」 を押してVBAProjectウィンドウを開きます

「ツールタブ – VBAProjectのプロパティ」 の順に選択してプロジェクトプロパティを開きます

ツールタブ - VBAProjectのプロパティ の順に選択してプロジェクトプロパティを開きます

プロジェクトプロパティの「保護タブ」を選択して、「プロジェクトを表示用にロックする」へをいれます

「パスワードと、パスワードの確認入力」へパスワード(同じもの)を入力してOKボタンをクリックします

VBAProject-プロジェクトプロパティの保護タブを選択して、プロジェクトのロック(保護)、パスワードを設定する

これでブックを保存し閉じると、以降はブックを開き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ローカルでもネットワーク上でもログファイルを置く場所はどちらでも動作します

いかがでしたでしょうか。一助になれば幸いです

この記事が気に入ったら
フォローしてね!

  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

BOOGALOO BOOGALOO ブガルー代表

憩いの場・コミュニティサイト
nanini を開発いたしております
左のリンクボタンからどうぞ↓🙏

目次