共有ファイルを誰が開いたかログを記録したい
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し、短い名前で利用する」★マクロ初級者必読-



コメント