|
|||||
VBS(VB SCRIPT/WSH)やVBAで手軽にファイルの変更を監視する方法をご紹介します。 ファイル監視とは、指定のファイルに対し更新日時の変更やファイルの追加、削除を監視し、 通知(メッセージ表示、アイコン点滅、メール送信)や指定プログラム実行をする事を意味します。 このサンプルでは変更/追加/削除の有無を通知(メッセージ表示)します。 ファイル監視関係のその他のサンプルソースはこちらです。 VBSやVBAでフォルダの変更を監視する方法 VBSやVBAでフォルダ比較し差分を出力する方法 VBSやVBAでファイル比較し差分を出力する方法 フォルダ監視(ファイル監視)関係のその他のツールやサンプルソースはこちらです。 ファイル監視/フォルダ監視(ツール&サンプル) ファイル比較/フォルダ比較(ツール&サンプル) ★ファイル監視サンプルソース ' -------------------------------------------------------------------- ' VBAの時はSleepのAPI宣言(Declare)が必要 ' Private Declare Sub Sleep Lib "kernel32" (ByVal dwMs As Long) ' -------------------------------------------------------------------- ' 監視するファイルの設定 fil_path = "D:\Temp\test\a.txt" Set fso = CreateObject("Scripting.FileSystemObject") ' (変更前)ファイルの更新日時の取得 file_dtm1 = "" If fso.FileExists(fil_path) Then file_dtm1 = fso.GetFile(fil_path).DateLastModified End If Do WScript.Sleep(1000) ' VBSの時 'Sleep 1000: DoEvents ' VBAの時 ' (変更後)ファイルの更新日時の取得 file_dtm2 = "" If fso.FileExists(fil_path) Then file_dtm2 = fso.GetFile(fil_path).DateLastModified End If ' 変更前後のファイル更新日時を比較 If file_dtm1 <> file_dtm2 Then If file_dtm1 <> "" And file_dtm2 <> "" Then MsgBox "変更されました" ElseIf file_dtm1 <> "" Then MsgBox "削除されました" Else MsgBox "追加されました" End If End If ' 変更後日時を変更前日時として設定 file_dtm1 = file_dtm2 Loop Set fso = Nothing ' -------------------------------------------------------------------- |