サイトアイコン HIBISEI Blog

共有フォルダのファイル更新をExcelで検知!通知マクロVBAコード完全ガイド【初心者OK】

あなたは社内のメンバーにファイルの更新を依頼して、上書き保存してもらったとき、更新したことを教えてほしいと思ったことはありませんか?

あなた「Aさん、あのファイル更新してくれた?」

Aさん「はい!昨日入れました!」

あなた「了解!ありがとう!(心の声:更新したら言ってよ~)」

あるあるですよね?更新したら教えてほしいですが、タイミングによっては言いそびれてしまう事もあります。

いちいち聞くのも面倒ですが、いちいち言うのも面倒です。更新したのが自動で通知されれば、より便利ですよね。

エクセルのマクロを使えば、フォルダを更新したら自動で通知を出してくれます。

今回は、「共有フォルダのファイル更新をExcelで検知!通知マクロVBAコード完全ガイド【初心者OK】」を紹介します。

共有フォルダのファイル更新をExcelで検知!通知マクロVBAコード完全ガイド

共有フォルダのファイル更新をExcelで検知!通知マクロVBAコード完全ガイドです。

ファイルが更新されたら、下の画像のようなメッセージが出る方法で紹介します。

1.「alt」+「F11」 →「挿入」 →「標準モジュール」をクリック

2.「Module1」をクリック

3.コードを入力

1分おきにファイルをチェックする、という意味です。

コードの2行目の”   ”のところに更新を確認したいファイルのパスを入れます。

4.「開発」 →「マクロ」 →「実行」をクリック

コードが入力できたら、マクロを実行します。

5.ファイルを更新する →通知が出る

例えば、検知対象のエクセルファイル内のA1セルを「test3」→「変更したよ」にしました。

1分待ちます・・・通知が出ました!

これでファイルの更新は自動でわかるようになりましたね~。

まとめ

共有フォルダのファイル更新をExcelで検知!通知マクロVBAコード完全ガイドです。

1.「alt」+「F11」 →「挿入」 →「標準モジュール」をクリック

2.「Module1」をクリック

3.コードを入力

4.「開発」 →「マクロ」 →「実行」をクリック

5.ファイルを更新する →通知が出る

これならファイルの更新の確認はスムーズになりますね!

最後に、今回使用したコードです。

' 標準モジュールに貼り付けてください
Public gLastModified As Date
Public Const targetFilePath As String = "C:\Users\**********.xlsx"

Sub StartMonitoring()
    ' 初期状態での最終更新日時を記録
    On Error Resume Next
    gLastModified = FileDateTime(targetFilePath)
    If Err.Number <> 0 Then
        MsgBox "対象ファイルが見つかりません。" & vbCrLf & targetFilePath, vbCritical
        Exit Sub
    End If
    On Error GoTo 0

    ' 60秒後にチェックする
    Application.OnTime Now + TimeValue("00:00:10"), "CheckFileUpdate"
End Sub

Sub CheckFileUpdate()
    Dim currentModified As Date

    On Error Resume Next
    currentModified = FileDateTime(targetFilePath)
    If Err.Number <> 0 Then
        MsgBox "ファイルが見つかりません。監視を終了します。", vbExclamation
        Exit Sub
    End If
    On Error GoTo 0

    ' 更新されていれば通知
    If currentModified > gLastModified Then
        MsgBox "ファイルが更新されました:" & vbCrLf & targetFilePath, vbInformation
        gLastModified = currentModified
    End If

    ' 再度監視を続行(60秒後)
    Application.OnTime Now + TimeValue("00:00:10"), "CheckFileUpdate"
End Sub

Sub StopMonitoring()
    On Error Resume Next
    Application.OnTime EarliestTime:=Now + TimeValue("00:00:10"), _
                      Procedure:="CheckFileUpdate", Schedule:=False
    MsgBox "監視を停止しました", vbInformation
End Sub
モバイルバージョンを終了