共有ファイルを誰が開いたかログを記録したい
Excelで情報共有や閲覧チェックなどを共有サーバーのエクセルファイルで管理するケースがあります。
その際、誰が開いたのか(誰がアクセスしたのか)を記録をすることで、
情報管理者は閲覧していない人物を判断する事が可能です。
ログ記録するサンプルコード
'■ファイルを起動時、誰がアクセスしたのかログを記録する。 '■ThiWorkbook内にコード記載する必要があります。 Private Sub Workbook_Open() Dim ws As Worksheet Dim lastRow As Long '■シート「Log」を変数に格納(マクロ実行前にシート「Log」を作成必要です) Set ws = ActiveWorkbook.Worksheets("Log") '■1列目(A列)の最終行+1を取得する lastRow = call_LastRow_ws(1, ws) + 1 '■ブックをオープンした際、時刻、OS、PC名、ユーザー名を記録する ws.Cells(lastRow, 1) = Now() ws.Cells(lastRow, 2) = Environ("OS") ws.Cells(lastRow, 3) = Environ("COMPUTERNAME") ws.Cells(lastRow, 4) = Environ("USERNAME") ThisWorkbook.Save End Sub
注意点
- 共有サーバーのファイル内に記録を取ります。
=ローカル環境にエクセルファイルをコピーされると、追う事ができません。(ログ履歴を残します) - 今回のコードだけでは動作しません。こちらの他シートの最終行を取得するマクロが必要です。
- ログシートの存在を隠したい場合は、シート表示を「xlVeryHidden」にして非表示としましょう。
シートが非表示でもマクロは動作します。 - Environ関数でPCの情報を取得可能です。詳細は別記事を参照してください。
関連記事
ExcelVBAマクロ「ワークシート名を変数にSetし、短い名前で利用する」★マクロ初級者必読-
コメント