我有一个从机器自动生成的文本文件。机器将 txt 文件写入“块”(对不起,我不知道确切的术语)。我需要从这个 txt 文件中提取数据,但我需要先完成 txt 文件,然后才能从中提取数据。我找到了一个解决方案来验证机器是否已完成对文件的写入......它并不像我希望的那样优雅,但似乎可以解决问题。Excel VBA 打开一个命令提示符,命令提示符使用 Find 命令查找字符串“End of Report”...这基本上是 txt 文件的最后几行之一,可以假设 txt 文件在此之后完成被发现。此代码每 10 秒循环运行 1000 次,直到找到此字符串或达到 1000 次尝试...
问题是“结果”返回除了“报告结束”之外的一些其他字符,这使我也试图在一些 csv 文件上运行它的事实更加复杂......并且“结果”也返回一些额外的字符,但不同于从 txt 文件返回的那些。例如,如果我检查“结果”的长度......长度在一个文件上返回为 43,在另一个文件上返回为 48......我认为它正在计算文件路径+“报告结束”+更多人物?
无论如何,我真的不需要“结果”......如果“查找”找到“报告结束”,我真的只需要一个“真”/“假”......我怎么能做到这一点?有没有更好的方法来做到这一点?我不熟悉命令提示符编程。
注意:重要的是我搜索这些文件而不打开它们。
Sub test()
Dim SearchStr As String
Dim cmdLine As Object
Dim result As String
Dim FilePath As String
FilePath = "D:\test2.txt"
SearchStr = """End of Report"""
Set cmdLine = CreateObject("WScript.Shell")
result = cmdLine.Exec("%comspec% /C Find " & SearchStr & " " & Chr(34) & FilePath & Chr(34)).STDOut.ReadAll
Debug.Print (result)
End Sub