プロが教えるわが家の防犯対策術!

同じフォルダ内にあるテキストファイルを監視し更新があった場合に指定セルに「更新」と表示出来るコードを設定しましたが、別添のようなエラーメッセージが出てしまします。
コード内(fileDateTime)が変色しております。
詳しいコード共に解決方法を教えてください。
このコードは作業ブックの「Sheet1」に設定しております。
コード
Option Explicit
Private Sub Worksheet_Activate()
' シートがアクティブになるたびに監視を開始する
StartFileMonitoring
End Sub
Private Sub Worksheet_Deactivate()
' シートが非アクティブになったら監視を停止する
StopFileMonitoring
End Sub
Private Sub StartFileMonitoring()
Application.OnTime Now + TimeValue("00:00:02"), "CheckForFileUpdate"
End Sub
Private Sub StopFileMonitoring()
On Error Resume Next
Application.OnTime Now + TimeValue("00:00:02"), "CheckForFileUpdate", , False
End Sub
Private Sub CheckForFileUpdate()
Dim folderPath As String
Dim fileName As String
Dim filePath As String
' 作業フォルダのパスを取得
folderPath = ThisWorkbook.Path
' 監視対象のテキストファイル名を設定(ここでは"sample.txt"としますが、実際のファイル名に合わせてください)
fileName = "23079238-1_再修正依頼.txt"
' ファイルのフルパスを取得
filePath = folderPath & "\" & fileName
' ファイルが存在し、前回の更新日時と異なる場合、セルに「更新」と表示する
If FileExists(filePath) And FileUpdated(filePath) Then
ThisWorkbook.Sheets("再修正").Range("A1").Value = "更新"
End If
' 監視を再開する
StartFileMonitoring
End Sub
Private Function FileExists(filePath As String) As Boolean
On Error Resume Next
FileExists = (Dir(filePath) <> "")
On Error GoTo 0
End Function
Private Function FileUpdated(filePath As String) As Boolean
Dim fileDateTime As Date
Dim prevFileDateTime As Date
Static prevFilePath As String
' 前回のファイルパスが設定されていない場合、または前回と異なるファイルを監視する場合
If prevFilePath = "" Or prevFilePath <> filePath Then
prevFileDateTime = #1/1/1601# ' 初期値は1601年1月1日(ファイルが存在しないことを示す)
prevFilePath = filePath
End If
' ファイルの更新日時を取得
fileDateTime = fileDateTime(filePath)
' 前回の更新日時と異なる場合、ファイルが更新されたと判定する
If fileDateTime <> prevFileDateTime Then
prevFileDateTime = fileDateTime
FileUpdated = True
End If
End Function

「ExcelのVBAコードについて教えてく」の質問画像

A 回答 (1件)

こんにちは



全体が冗長な構造になっているので、追いかけるのが面倒ですけれど・・

メッセージの通りでしょう。
>Dim fileDateTime As Date
と宣言しているのにも関わらず、
>fileDateTime = fileDateTime(filePath)
で右辺の意味が通じないから。

そもそも、組み込み関数として利用したいのではないのでしょうか?
もしそうなら、妙な宣言をして勝手に意味を変えてはダメですね。
    • good
    • 1
この回答へのお礼

回答ありがとうございます。
理解出来ました。

お礼日時:2023/08/09 12:09

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています