どうもマサヤです!
「WEBのようにExcelでアクセス数がカウントできたらいいのになぁ~」
こうお悩みのアナタと私のためのコードを紹介します。
ThisWorkBook内に下記のコードをコピペするだけでカウントできますよ!
Excelで作成したレポートが見られているか?
見たいと思ってもらえるような内容や紹介ができたのか?
アクセス数をカウントすることで、体感だけでなく実際の数値として可視化できるのは重要ですよね。
是非、コードをコピペして可視化してみてくださいね。
今回は2つのコードを紹介します。
ブック内にアクセス数を記録する方法と、別CSVファイルにアクセス数を記録する方法を紹介します。
利用用途に併せて使い分けてくださいね!
ブック内にアクセス数を記録するコード
まずは、ブック内にアクセス数を記録する方法です。
起動されるExcelがコピー・切取されないと解っている場合はこちらがおススメです。
コード
Private Sub Workbook_Open() Dim ws As Worksheet Set ws = ActiveWorkbook.Worksheets("Count") my_row = ws.Cells(Rows.Count, 2).End(xlUp).Row + 1 ws.Cells(my_row, 2) = Now() ws.Cells(my_row, 3) = Environ("COMPUTERNAME") ws.Cells(my_row, 4) = Environ("USERNAME") ws.Cells(my_row, 5) = Environ("OS") ThisWorkbook.Save End Sub
Environは環境変数を取得できる関数です。
出力イメージ
別のCSVにアクセス数を記録するコード
↑で紹介したコードはExcelをコピーされると正しくアクセス数をカウントできません。
その場合はこちらのコードがおすすめです。
指定したCSVファイルにアクセス数がカウントさせるので、Excelがコピペされても問題ありません。
また、複数Excelにコードを差し込むことでブック別にアクセス数を記録することもできます。
コード
Private Sub Workbook_Open() 'エラーが発生しても、エラーを表示させずに開かせる On Error GoTo ErrorHandler Dim LogData(4) As Variant 'アクセス回数を記録するファイル名を設定 ※好きな場所に変更してください。 file_path = ActiveWorkbook.Path & "\data.csv" 'ファイル番号を取得。 FileNumber = FreeFile Open file_path For Append As #FileNumber LogData(0) = Now() LogData(1) = Environ("COMPUTERNAME") LogData(2) = Environ("USERNAME") LogData(3) = Environ("OS") LogData(4) = ActiveWorkbook.Name Print #FileNumber, Join(LogData, ",") Close #1 ErrorHandler: End Sub
ネットワーク接続不可などのエラーに備えて例外処理を入れています。
これによりVBAコードによるエラー表示が出現しません。
動作も素早く、使用者はアクセス数が取得されていることに気づきません。
CSVの出力イメージ
まとめ
コードを2つ紹介しました。
Excelコピーのリスクヘッジ・複数ブックのアクセス数カウントの観点から2つ目がおススメです。
私自身、会社でこのコードを使ってアクセス数を取得・グラフ化して傾向把握などをしてます。
共有事項などは結構見ていない人が多かったりします)笑
そして、自身のレポートが有用なのかどうかが解りました。
今までは結構な工数をかけてレポートが読まれたかを口頭やメールで確認していました。
でも、この方法ならコードを差し込むだけでアクセス数がカウントできるんです!
ぜひ、コピペしてお使いください!
コメント