はじめに
社内で共有されているExcelファイルが、どれくらい閲覧されているのかを把握したいと思ったことはございませんか?
たとえば、プロフィール情報のような「形だけ作って誰も見ていない」ファイルが、実際にどれだけ開かれているのかを知ることができれば、運用の見直しにも役立ちます。
今回は、Excelマクロ(VBA)を使って、ブックが開かれた回数を自動でこっそりカウントする方法をご紹介いたします。特に、シートを非表示にしてユーザーに気づかれずに記録する方法に焦点を当てて解説いたします。
本記事の目的
- Excelファイルが開かれた回数を自動で記録したい
- ユーザーにカウンターが見えないようにしたい
- ワークシート関数ではなく、VBA(マクロ)で実現したい
- 最低限の設定で完結する方法を知りたい
このような目的をお持ちの方に最適な内容となっております。
使う技術:Excelマクロ(VBA)+VeryHiddenシート
今回ご紹介する方法では、ブックを開くたびに、隠しシートに記録されている「開いた回数(カウント)」を1つずつ増やしていきます。その隠しシートはExcelの通常操作では表示できない「VeryHidden」状態に設定されているため、ユーザーに気づかれることは基本的にありません。
実装手順
1. 「ThisWorkbook」モジュールを開く
- Excelファイルを開きます。
Alt + F11
で VBE(Visual Basic Editor) を起動します。- 左側の「Microsoft Excel Objects」内にある
ThisWorkbook
をダブルクリックします。
2. 以下のコードを貼り付ける
' ThisWorkbook モジュール
Option Explicit
Private Sub Workbook_Open()
Const SHEET_NAME As String = "_Counter" ' 非表示用シート名
Const CELL_ADDR As String = "A1" ' カウンター格納セル
Dim ws As Worksheet
Dim cnt As Long
Application.EnableEvents = False
' シートが無い場合は追加して VeryHidden に設定
On Error Resume Next
Set ws = ThisWorkbook.Worksheets(SHEET_NAME)
On Error GoTo 0
If ws Is Nothing Then
Set ws = ThisWorkbook.Worksheets.Add(After:=Sheets(Sheets.Count))
ws.Name = SHEET_NAME
ws.Visible = xlSheetVeryHidden
End If
' 現在値を読み取り(数値でなければ 0 扱い)
If IsNumeric(ws.Range(CELL_ADDR).Value) Then
cnt = CLng(ws.Range(CELL_ADDR).Value)
Else
cnt = 0
End If
' インクリメントして書き戻し
cnt = cnt + 1
ws.Range(CELL_ADDR).Value = cnt
' 値を確実に保存
ThisWorkbook.Save
Application.EnableEvents = True
End Sub
仕組みの説明
このコードは、Excelファイルを開いた瞬間に実行されます。
_Counter
という名前のシートが存在しない場合は、自動的に新規作成します。- そのシートにあるセル
A1
に記録された回数(数値)を読み込み、+1 して上書きします。 - シートは
VeryHidden
に設定されているため、通常の「再表示」操作では表示できません。 - 最後に
ThisWorkbook.Save
を実行して、回数が保存されるようになっています。
カウント値を確認するには?
カウントを保存している _Counter
シートは「非常に非表示」状態になっています。
再表示するには、以下の手順を実行してください。
VBEからの表示手順
Alt + F11
で VBE を開きます。- 左側の「Microsoft Excel Objects」や「シート一覧」から
_Counter
を選択します。 F4
を押して「プロパティ」ウィンドウを開きます。Visible
プロパティを-1 - xlSheetVisible
に変更すると、シートが再表示されます。
注意点
- ファイル形式は .xlsm(マクロ有効ブック) として保存してください。
- 初回のみ、マクロ実行の許可を求められることがあります。信頼された場所に保存すれば通知は抑制可能です。
- カウントを完全に隠したい場合は、他のユーザーがVBAを編集・確認できないよう、VBAプロジェクトにパスワード保護をかけておくと安心です。
まとめ
本記事では、Excelファイルを開いた回数を自動で記録するマクロの実装方法をご紹介いたしました。VeryHidden
シートを活用することで、ユーザーに気づかれずにアクセス数をログとして残すことが可能になります。
「誰が、いつ、どれだけそのファイルを開いているか」を把握したいというニーズは、業務の見直しや証拠資料の収集において非常に有効です。ぜひ一度、今回の方法をご活用いただき、実際の活用状況を可視化してみてはいかがでしょうか。