【发布时间】:2019-10-28 19:28:21
【问题描述】:
我有一个 Excel 工作簿,它使用启动批处理文件的热键,该批处理文件启动节点脚本,更新 CSV 文件。技术细节如下。
工作簿使用 CSV 文件作为数据源。我可以通过转到Data > Refresh All > Refresh All 使用 CSV 文件中的数据手动更新工作簿。
一旦 CSV 文件中有新数据或批处理文件完成时,是否有任何方法可以触发工作簿中的更新?从概念上讲,我问的是外部事件如何触发 Excel 中的某些内容。
以下是该过程的详细信息:
当在 Excel 工作簿中按下热键时,它会启动 MS 控制台(“cmd.exe”)并传递要运行的批处理文件的位置和所选单元格的值。批处理文件以这种方式运行的原因可能与这个问题无关,但我知道它会被问到,所以我将解释:批处理文件与工作簿位于同一目录中,而不是硬编码的位置。问题是直接启动批处理文件/cmd.exe 将默认为 C:\users\name\documents 的工作目录。因此,要在与工作簿相同的目录中启动批处理文件,将工作簿的路径传递给 cmd.exe,如下所示:CD [path] 然后与另一个命令串联以启动批处理文件,其值为选择单元格作为参数,如下所示:CD [path] & batch.bat cellValue
还和我在一起吗?
然后批处理文件启动一个节点脚本,再次使用选定的单元格值作为参数。
Node 脚本从 Web 中提取数据并将其转储到 CSV 文件中。
此时,工作簿仍有过期数据,需要刷新。这怎么可能是自动的?
我可以在启动批处理文件后在 VBA 中启动一个静态计时器,然后运行ActiveWorkbook.RefreshAll,但是如果批处理文件花费的时间太长,就会出现问题。
【问题讨论】:
-
您是否尝试为此活动创建宏?
-
@DavidGarcíaBodego - 我在问如何让外部事件在 Excel 中触发某些东西。一旦我弄清楚它是否可能,我就会创造一些东西。
-
忘记反对票 :-) 关于你的问题......我不明白为什么要使用批处理来介绍 Excel 数据表上的信息,而你可以通过宏来做到这一点。如果您可以提供更多详细信息作为输入样本和预期输出样本,我将为您提供帮助。
-
@DavidGarcíaBodego - 我已经更新了这个问题,希望这能让它更容易理解。
-
所以只需创建一个开始调用批处理文件的 VBA 宏,这样当它结束时,它会再次获得控制权。
标签: excel vba windows batch-file command-line