Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


37931 / 76732 ←次へ | 前へ→

【43947】Re:Excelで使用したファイルを監視する方法は?
回答  りん E-MAIL  - 06/10/30(月) 18:06 -

引用なし
パスワード
   初心者 さん、こんばんわ。

>ここで伺う質問ではないかも知れませんが、当方Excelに詳しく
>無いもので、ご指導を賜りたいと思います。
エクセルの起動(単一PC)の記録を取るならこんな感じです。

詳しくない人に紹介するのもアレな内容になってしまいますが。
1. ↓以下をThisworkbookに記述します。

Option Explicit
Private WithEvents app As Application
'シート(ログ)に転記
Private Sub app_WorkbookBeforeClose(ByVal Wb As Workbook, Cancel As Boolean)
  If Wb.Name <> ThisWorkbook.Name Then
   Log_Edit Wb.FullName, "Close" '実働部分は別Sub
  End If
End Sub
'シート(ログ)に転記
Private Sub app_WorkbookOpen(ByVal Wb As Workbook)
  If Wb.Name <> ThisWorkbook.Name Then
   Log_Edit Wb.FullName, "Open" '実働部分は別Sub
  End If
End Sub
'Open_Close共通処理
Private Sub Log_Edit(arg1 As String, arg2 As String)
  'arg1:フルパスファイル名 arg2:処理状況
  Dim r1 As Range
  With Application.ThisWorkbook.Worksheets(1)
   Set r1 = .Range("A65536").End(xlUp).Offset(1, 0)
   If r1.Row = 10002 Then
     LogDataFile '10000件で強制ログクリア
     Set r1 = .Range("A2")
   End If
   r1.Value = arg1
   r1.Offset(0, 1).Value = Now
   r1.Offset(0, 2).Value = arg2
  End With
End Sub
'かならず上書き(念のためウィンドウは非表示)
Private Sub Workbook_BeforeClose(Cancel As Boolean)
  With ThisWorkbook
   .Windows(1).Visible = False
   .Save
  End With
End Sub
'ブックオープン時のイベント
Private Sub Workbook_Open()
  Set app = Application
  With Application.Workbooks
   If .Count = 1 Then .Add
  End With
End Sub
'ログを表示したいときに、手動で実行してください。
'カレントフォルダ(ツール→オプション→全般)に保存されます。
Private Sub LogDataFile()
  Dim II As Long, Imax As Long, ofile As String
  With Application
   'フルパスファイル名
   ofile = .DefaultFilePath & .PathSeparator & Format(Now(), "eemmddhhmm") & ".csv"
  End With
  With ThisWorkbook.Worksheets(1)
   Imax = .Range("A65536").End(xlUp).Row
   'ログ出力
   Open ofile For Output As #2
     For II = 2 To Imax
      Print #2, .Cells(II, 1).Value; ","; .Cells(II, 2).Value; ","; .Cells(II, 3).Value
     Next
   Close #2
   'ログクリア
   .Columns("A:C").ClearContents
  End With
End Sub


2. VBAProjectをパスワードでロックします。
3. 適当に名前をつけて保存し、エクセルを終了します。
4. XLStartフォルダにこのブックを入れると、起動時に読み込まれます。
ブックを開いたり閉じたりする度にログが記録されます。

ログクリアは1万件に1回ファイルを出力するようにしていますが、必要に応じてVBAProjectのパスを解除してコードを表示し、LogDataFileを実行してください。
なお、ログファイルはカレントフォルダにcsv形式で出力されます。

意味が違ってたらごめんなさい。
0 hits

【43944】Excelで使用したファイルを監視する方法は? 初心者 06/10/30(月) 15:00 質問
【43946】Re:Excelで使用したファイルを監視する方法... Statis 06/10/30(月) 16:13 質問
【43964】Re:Excelで使用したファイルを監視する方法... 初心者 06/10/31(火) 12:02 回答
【43947】Re:Excelで使用したファイルを監視する方法... りん 06/10/30(月) 18:06 回答
【43951】Re:Excelで使用したファイルを監視する方法... 朝顔 06/10/30(月) 21:49 質問
【43955】Re:Excelで使用したファイルを監視する方法... りん 06/10/30(月) 22:39 発言
【43957】Re 教えて君ですいません 朝顔 06/10/30(月) 23:13 質問
【43958】Re:Re 教えて君ですいません りん 06/10/31(火) 7:09 回答
【43959】ログ取りアドインにしてみました(脱線中) りん 06/10/31(火) 9:27 回答
【43960】Re:ログ取りアドインにしてみました(脱線... りん@通りすがり 06/10/31(火) 10:49 発言
【43977】Re 教えて君ですいません2 朝顔 06/10/31(火) 15:48 質問
【43978】Re:Re 教えて君ですいません2 Kein 06/10/31(火) 16:05 発言
【43979】Re:Re 教えて君ですいません2 朝顔 06/10/31(火) 16:32 お礼
【43980】Re:Re 教えて君ですいません2 りん 06/10/31(火) 17:55 発言
【43998】Re:Re 教えて君ですいません2 朝顔 06/10/31(火) 20:53 発言
【43999】Re:Re 教えて君ですいません2 りん 06/10/31(火) 20:57 発言
【44000】Re:Re 教えて君ですいません2 朝顔 06/10/31(火) 21:18 お礼
【44001】Re:Re 教えて君ですいません2 りん 06/10/31(火) 21:47 回答
【44003】Re:Re 教えて君ですいません2 朝顔 06/10/31(火) 22:29 お礼
【43971】Re:Excelで使用したファイルを監視する方法... 初心者 06/10/31(火) 13:02 お礼

37931 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free