[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『アクセス回数の表示』(木庭)
ネットワーク上にある、Bookのアクセス回数を表示したいのですが、教えてください。 ファイル名はBook1で表示する場所はSheet1のA1です。
< 使用 Excel:unknown、使用 OS:unknown >
ちょっとずれていますが、自分はこのようなものを使用しています。 A列に番号を振りb列以降は開いた環境に委ね保存してます。 シート名は、logとしており、非表示しています。
Private Sub Workbook_Open()
With Sheets("Log") .Range("B65536").End(xlUp).Offset(1, 0).Value = Now() .Range("C65536").End(xlUp).Offset(1, 0).Value = Environ("COMPUTERNAME") .Range("D65536").End(xlUp).Offset(1, 0).Value = Environ("USERNAME") .Range("E65536").End(xlUp).Offset(1, 0).Value = Environ("OS") End With
ThisWorkbook.Save
End Sub (aki) 2014/01/12(日) 01:02
akiさんありがとうございます。
マクロをスタートする毎に更新日時などが列記されるんですね 参考になりました。ありがとうございました。 Bookを開く度にカウントされる。なんて無理な話でしょうか? (木庭) 2014/01/12(日) 09:36
> Bookを開く度にカウント となると、ブックにカウントデータを置く方法だと、上書き保存するが必須になってしまいます。 閲覧だけもカウントするには? が問題になりますね!! ブック以外の場所にカウンタを置いておく事を考えてみてください。
例えば、 対象ブックと同じファルダ上の別のブック、カウンタデータだけなら、テキストファイルでも 良いですよね!! 後は、iniファイル等もよいです。
とにかく、ブック以外の場所にカウントデータを配置する ことを考えてみてください。
VBAを使うという前提です。
(ichinose) 2014/01/12(日) 10:28
やり方はいろいろだと思いますが、aki さんの提示された方法はファイルを開いたときに 自動で実行されるので、マクロを手動で実行するものではありません。
都度 EXCEL を保存をしたくないというのであれば、ichinose さんのコメントのような対応 になるでしょうけれど。
ちなみにバージョンの提示がありませんが下記のようにしておけば、 Private Sub Workbook_Open() With Sheets("Log").Cells(Rows.Count,"A").End(xlUp).Offset(1, 0) .Resize(1,4) = Array(Now(),Environ("COMPUTERNAME"),Environ("USERNAME"),Environ("OS")) End With ThisWorkbook.Save End Sub
ファイルが xlsm である場合、655366 以降もログが記録できます。
シートに履歴を保存する場合、どこかに =COUNTA(Log!A:A) とすれば、それがアクセス回数になると思います。 (Mook) 2014/01/12(日) 11:22
ググって見ました こんなものありました。
Private Sub Workbook_Open() Dim cnt On Error GoTo end0 With ThisWorkbook cnt = .CustomDocumentProperties("オープン回数").Value .CustomDocumentProperties("オープン回数").Value = cnt + 1 .Save Exit Sub end0: .CustomDocumentProperties.Add Name:="オープン回数", _ LinkToContent:=False, _ Type:=msoPropertyTypeNumber, _ Value:=1 .Save End With End Sub
エクセルのブックを開いた回数を 「ファイル」 →「プロパティ」 →「ユーザー設定」の「オープン回数」に記録させるマクロ のようです。
(aki) 2014/01/12(日) 18:20
ichinoseさん、Mookさん、akiさんありがとうございます。 ネットワーク上にある、集計のマクロを毎朝私が更新させているBookを、何人くらい閲覧しているのか調査 したく質問しました。したがってSaveするのは私だけです。
> 例えば、 対象ブックと同じファルダ上の別のブック、カウンタデータだけなら、テキストファイルでも 良いですよね!! 後は、iniファイル等もよいです。 とにかく、ブック以外の場所にカウントデータを配置する ことを考えてみてください。 VBAを使うという前提です。
フォルダ名を木庭、Book名をBook1、Sheet名をLogとして詳しく教えていただけないでしょうか? (木庭) 2014/01/12(日) 19:45
>詳しく教えていただけないでしょうか? いくつか仕様方針に間違いもあるので、今回をコードを提示します。
対象ブックのThisWorkbookのモジュールに
Option Explicit Const cname = "opncounter.bin" Private Sub Workbook_Open() Worksheets(1).Range("a1").Value = Me.countUp End Sub Sub mk_counter() Dim fno As Long Dim cnt As Long On Error Resume Next Kill ThisWorkbook.Path & "\" & cname fno = FreeFile Open ThisWorkbook.Path & "\" & cname For Random Lock Read Write As #fno Len = Len(cnt) cnt = 0 Put #fno, 1, cnt Close #fno On Error GoTo 0 End Sub Function countUp() As Long Dim fno As Long Dim cnt As Long fno = FreeFile On Error Resume Next Do Err.Clear Open ThisWorkbook.Path & "\" & cname For Random Lock Read Write As #fno Len = Len(cnt) Loop While Err.Number = 55 Or Err.Number = 70 If Err.Number <> 0 Then MsgBox "fatal error" & Err.Number Stop Else Get fno, 1, cnt Put fno, 1, (cnt + 1) countUp = (cnt + 1) Close #fno End If End Function
まず、最初にThisWorkbook.mk_counter を実行して対象ブックと同じフォルダ上に opncounter.binというファイルを作成してください。
このファイルがカウンター保存用ファイルです。
実行したら、対象ブックを上書き保存して下さい。
これで準備は、終わりです。
後は、一度対象ブックを閉じてから、再度ブックを開いてみてください。
最左端のワークシートのセルA1にアクセス回数が表示されます。
コードの意味は、よく調べて理解してみてください。 ↑これをやらなければ、コードを投稿した意味がないので・・・。
(ichinose) 2014/01/14(火) 08:02
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.