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