ファイルが更新されたらお知らせツール

コンテンツ
IT・テクノロジー
しゃあ's Labo代表のしゃあです。
「痒いところに手が届くツール」シリーズ。この後何個出せるかわかんないけど、とりあえずシリーズ化! 先のことなんてわからないけど始めることが大事よね(となんか深そうで浅いこと言ってみるw)

ということで今回はこれだ!

あの人が入力してくれないと次の作業が始められない

集計作業を始めたいのにAさんがまだ入力してくれない。入力してって何度もお願いしているのに対応が遅い!今日終わらせたいのにもぉぉぉ!

(18時 チャットにて)
私  :入力はまだ時間がかかりそうですか?
Aさん :え?お昼過ぎに入力しましたよ?何か変ですか?
私  :?? え?そ、そうなんですか?ありがとうございました。
   (入力したら入力したって言えやゴルァァ!)
Aさん :そろそろ帰るので何かあれば明日対応しますね。
私  :お、お、お疲れさまでした。
   (テメェのせいでこっちは残業じゃねーかゴルァァァ!)

なんて経験はありませんか?
ちゃっと一言してもらえたら残業しなくても済んだはずなのに、いやぁムカつきますよねぇ。
でもAさんにはAさんの事情があったかも。なのであまり強くも言えないし。
ということで、こういうムダムダムダな時間はITで解決しちゃいましょう。
ITといっても大したものではありません。Windows標準装備のVBScriptでちょっとだけ書き書きすればできるので安心してください。

このツールが使える環境

● Windows環境であること
● メモ帳が使えること
・・・以上!
インストールも不要だし、ネットからのダウンロードができない方はメモ帳で目コピでOKです。
VBSで記述したのでMacの方はごめんなさい。

プログラム
ちょっと長い?ので下にテキスト掲載します。
そこからコピペしてください。
プログラム.png

使い方

使い方も簡単。このファイルをダブルクリックし次の2項目を入力するだけ。
・チェック終了日時 
・チェック対象ファイルパス
プログラムをちょっと書き換えれば変更も不要です。

実行後は5分毎に指定ファイルが更新されたかどうかを確認し、更新がされていたらこんな画面が表示されます。
ここで[いいえ]を選べば定期チェック終了。[はい]を選べば定期チェック続行です。


チェック知得画面.png

更新がされなかった場合でも指定した終了時刻になれば自動的に動作を停止します。

作り方

ココナラブログでは残念ながらファイル添付ができません。
でも諦めるのはまだ早い!
短いプログラムなのでコピペで可能。使うツールはなんとメモ帳だけ。
コピペするときの手順を記載します。ちょっとだけ注意が必要です。

1.メモ帳を開いて上記コードをコピペ、もしくは手書き

Const DefaultFile = "C:\TEST.txt" 'チェック対象ファイルのフルパスを記載
Const Cinterval = 5 'チェックする時間間隔。(初期設定=5分単位)

Dim tempStr
Dim FinishDate
Dim fs
Dim file
Dim FilePath
Dim TargetFileDate

Set fs = CreateObject("Scripting.FileSystemObject")
tempStr = InputBox("チェック終了日時(例:2021/8/22 19:00)", "定期チェック", DateSerial(Year(Now), Month(Now), Day(Now)) + TimeValue("18:00"))
If IsDate(tempStr) = True Then
FinishDate = CDate(tempStr)
FilePath = InputBox("Input target file path", "対象ファイル", DefaultFile)
Set file = fs.GetFile(FilePath)
TargetFileDate = file.DateLastModified
Do Until Now() > FinishDate
    WScript.Sleep(Cinterval * 60 * 1000)
    If TargetFileDate < file.DateLastModified Then
        If vbYes = MsgBox(file.Name & " が " & file.DateLastModified & " に更新されました。" & vbCrLf & _
                    "監視を継続しますか?([いいえ]を選択するとプログラムを終了します。", vbYesNo, "定期チェック") Then
            TargetFileDate = file.DateLastModified
        Else
            Exit Do
        End If
    End If
Loop
    Call msgbox("ファイル定期チェックを終了しました。", vbOkOnly, "定期チェック")
Else
    Call MsgBox("再度実行し、日時を正しく入力してください", vbCritical, "定期チェック")
End If

2.名前を付けて保存
ここで2つ変更。
・拡張子を.txt から .vbsにする。
・文字コードをANSIにする。
これで完了。名前や保存場所は自由です。
ANSIを保存.png

これでもう無駄な時間もイライラすることもなくなりますね(^^)

VBScript と VBA

今回はVBScriptで作成しましたが、この言語はExcelやPowerPoint,AccessといったMicrosoft製品を操作できるVBA(Visual Basic for Applications)と酷似しています。VBAを学べばこんな感じのツールも作れちゃうということ。もちろん簡単ではありませんが、そこまで難しいものではありません。しっかりステップを踏んで学習すれば2か月程度で簡単なものは作れるようになります。これから一生、無駄な時間と付き合っていきますか?今、少しだけ頑張って時間を有効に使いますか?
ご興味ある方はお気軽にDMください。


サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す