[[20140111222642]] 『アクセス回数の表示』(木庭) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『アクセス回数の表示』(木庭)

 ネットワーク上にある、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.