サイトアイコン HIBISEI Blog

フォルダにファイルが保存されたら自動通知してくれるマクロを作る方法

あなたは社内のメンバーにファイルやデータ作成を依頼して、共有フォルダに保存してもらったとき、保存したら教えてほしいと思ったことはありませんか?

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

Aさん「もう3日前に入れましたよ」

あなた「わかった、ありがとう。(心の声:保存したら教えてよ~)」

まあよく見る光景ですが、フォルダを保存されたかいちいち見るのも面倒だし、聞くのも、答えるのも面倒です。

ただのホウレンソウ(報告・連絡・相談)の話のようにも聞こえますが、保存した方も、保存された方も、自動で通知されれば、より便利ですよね。

エクセルのマクロを使えば、共有フォルダに新しいファイルが保存されたら自動で通知を出せます。

今回は、「フォルダにファイルが保存されたら自動通知してくれるマクロを作る方法」を紹介します。

フォルダにファイルが保存されたら自動通知してくれるマクロを作る方法

フォルダにファイルが保存されたら自動通知してくれるマクロを作る方法です。

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

マクロを作るときは、「開発」タブを使います。
開発タブが出ていない方は、下のリンクで出し方を紹介していますので、まずは準備をお願いします。
→エクセルで開発タブを表示する方法

1.「開発」タブをクリック →「挿入」をクリック →「ボタン」をクリック

2.「新規作成」をクリック

3.コード入力画面が開く

4.コードを入力

コードを入力します。

5.ボタンができた →ボタンを押す

ボタンができたら、ボタンを押しましょう。

6.ファイルが追加されたら通知が出た

ボタンを押して、Aファイルにファイルを追加します。

少し待つと・・・通知が出ました!

これなら、「保存した?」→「保存しました!」のやり取りがなくなって、いちいち聞かなくてよくなりますね!

まとめ

フォルダにファイルが保存されたら自動通知してくれるマクロを作る方法です。

1.「開発」タブをクリック →「挿入」をクリック →「ボタン」をクリック

2.新規作成をクリック

3.コードを入れる画面が出る

4.コードを入力

5.ボタンができた →ボタンを押す

6.ファイルが追加されたら通知が出た

これでフォルダの保存をしたか、聞く方も、聞かれる方も、面倒がなくなりましたね!

最後に、紹介した赤枠部のコードです。

Option Explicit

Const WatchFolder As String = "C:\Users\*****\Desktop\A"
Dim LastFileCount As Integer

Sub ボタン1_Click()
    ' 初回ファイル数を取得
    LastFileCount = GetFileCount()
    
    ' 定期的にチェック
    Application.OnTime Now + TimeValue("00:00:10"), "CheckFolder"
End Sub

Sub CheckFolder()
    Dim CurrentFileCount As Integer
    CurrentFileCount = GetFileCount()
    
    If CurrentFileCount > LastFileCount Then
        MsgBox "Aフォルダに新しいファイルが追加されました!", vbInformation
    End If
    
    ' 最新のファイル数を記録
    LastFileCount = CurrentFileCount
    
    ' 再実行
    Application.OnTime Now + TimeValue("00:00:10"), "CheckFolder"
End Sub

Function GetFileCount() As Integer
    Dim FileName As String
    Dim Count As Integer
    
    FileName = Dir(WatchFolder & "\*.*") ' フォルダ内のファイルを取得
    Count = 0
    
    Do While FileName <> ""
        Count = Count + 1
        FileName = Dir()
    Loop
    
    GetFileCount = Count
End Function

Sub StopMonitoring()
    ' 監視を停止
    On Error Resume Next
    Application.OnTime Now + TimeValue("00:00:10"), "CheckFolder", , False
    On Error GoTo 0
End Sub

※*****のところは、適切なパスを入れて下さい。

モバイルバージョンを終了