从excel运行外部程序的最佳方法是什么?它可能会运行几分钟。关于如何做到这一点的最佳实践是什么?理想情况下,
但欢迎任何最佳做法。我对调用.dll或.exe的解决方案感兴趣。最好是与Excel '03或更早版本一起使用的东西,但我也很想听到移动到更高版本的原因。
答案 0 :(得分:5)
您应该查看这两篇Microsoft知识库文章
How to launch a Win32 Application from Visual Basic 和
How To Use a 32-Bit Application to Determine When a Shelled Process Ends
他们都快速为您提供启动流程的框架,然后检查其完成情况。每篇知识库文章都有一些可能相关的其他参考文献。
后一篇知识库文章假设您希望等待无限量的时间让shell进程结束。
您可以修改ret& = WaitForSingleObject(proc.hProcess,INFINITE)函数调用在以毫秒为单位的有限时间后返回 - 用表示毫秒的正值替换INFINITE并将整个事物包装在Do While循环中。返回值告诉您进程是否已完成或计时器是否已用完。如果过程结束,返回值将为零。
如果返回值非零,则进程仍在运行,但控制权将返回给您的应用程序。在此期间,当您对应用程序有正面控制权时,您可以确定是否更新某种UI状态,检查取消等。或者您可以再次循环并等待更多。
如果您正在炮击的程序是您编写的内容,甚至还有其他选项。您可以挂钩其中一个窗口并让程序发布消息,您可以将其附加到并用作状态反馈。如果您需要考虑它,最好留给单独的项目。
您可以使用流程结构从被调用进程获取返回值。您的进程需要返回一个值才有用。
我对这种需求的一般方法是:
希望这有帮助, 比尔。