【问题标题】:listening file changes in VBA Excel在 VBA Excel 中监听文件更改
【发布时间】:2016-09-29 14:05:34
【问题描述】:

我有一个包含两行 on/offcontinue/finish 的文本文件,它们由另一个程序解决。 VBA 程序必须根据第一行中的字符串值等待或继续,如果第二行是finish,则停止侦听事件。我已经读过可以使用类和事件创建一个变量以监听更改,如果该变量是在同一个程序中定义并在运行时更改的,则没有问题。但是如何监听外部文件中的字符串是否已更改并获取其值?可能吗?我必须检查文件是否已更改然后获取行吗?一对代码行会很有帮助,谢谢。

【问题讨论】:

  • 您是否已经有任何代码或正在寻找某人为您做作业?

标签: vba excel


【解决方案1】:

在 VBA 中我唯一能想到的就是添加重复的文件查找作为每隔几秒读取一次文件。所以检查VBA帮助命令Application.OnTime。如果您的应用程序在两者之间没有做很多事情,它可能会起作用,或者您。每次代码运行时都有可能出现小挂架。

同样,看看FileSystemObject。为了使用它,您需要在 VBA 中添加对\Windows\System32\scrrun.dll 的引用。至少有一些有用的功能可以有效地访问文件。

希望这会引导您朝着正确的方向前进。

【讨论】:

  • 我的想法和你类似,我正在尝试这个 [link] (msdn.microsoft.com/en-us/library/zds3tce6(v=vs.80).aspx) 但是 System.IO.FileInfo 导致编译停止,尽管我已经添加了参考(通过使用菜单)按照您的建议添加到 scrrun.dll。这个想法是,字符串值,即文件修改时间,由 Windows 更新,我的程序正在监听,然后某些任务将立即完成。我的 VBA 正在控制步进电机,当检测器在文本文件中写入 off 时,它们必须重新定位样本。
  • 等等,上面的链接是 VB.net(在 Visual Studio 中)而不是 VBA(Visual Basic for Application)。那是一种不同的编程语言。上面的链接是在 VB.net 中执行此操作的正确方法。据我所知,在 VBA 中,您不能像在 .net 中那样监听文件更改。当您按照我在 VBA 中的建议阅读文件时,请确保以 ReadOnly 模式打开文件,以防系统访问文件,并添加错误处理。这是一个示例 [链接]globaliconnect.com/excel/index.php?view=article&id=103
  • JoeCoolman,你找到解决方案了吗?我可以帮你吗?
  • 不,我还没有找到解决方案,而只是一种解决方法。是的,欢迎您@Rolfi 做出贡献。我所做的是定期检查文本文件行,这样做会使程序在读取 finish 之前无法执行任何其他任务。到目前为止,这种解决方法对我来说还可以,但如果程序可以在侦听文本文件内容的更改时执行其他任务,那就太好了。
猜你喜欢
  • 2012-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多