VBA编程“由于另一个程序正在运行中,此操作无法完成.”解决方法.

当遇到VBA自动化服务超时导致的'由于另一个程序正在运行中,此操作无法完成.'错误时,可以通过在App::InitInstance()函数中设置Ole消息过滤器来解决。具体解决方案是在AfxOleInit()之后添加代码,禁用忙碌对话框,设置繁忙回复,并启用未响应对话框,同时设置消息延迟为-1。如果需要,需包含afxole.h头文件。" 107306780,8679177,前端调试与绘制饼图实战,"['前端开发', 'JavaScript', '数据可视化']
摘要由CSDN通过智能技术生成

这是自动化服务超时引起,它有一个默认的响应时间,解决方法:

在App::InitInstance()里AfxOleInit()之后加上这个:
AfxOleGetMessageFilter()->EnableBusyDialog(FALSE);
AfxOleGetMessageFilter()->SetBusyReply(SERVERCALL_RETRYLATER);
AfxOleGetMessageFilter()->EnableNotRespondingDialog(TRUE);
AfxOleGetMessageFilter()->SetMessagePendingDelay (-1);
如果编译不通过,包含头文件#include <afxole.h>

 

COleMessageFilter类管理OLE应用程序交互所需要的并行能力。
COleMessageFilter类用于可视化编辑服务器和容器应用程序中,以及OLE自动化应用程序中。对于要调用的服务器应用程序,该类可使应用程序保持“忙”的状态,这样其他容器应用程序的调用请求就会被取消或稍后重试。当被调用的应用程序忙时,也可以使用该类确定调用者应用程序将采取什么样的动作。服务器应用程序常用的用法是在文档或其他OLE可访问的对象有可能遭到破坏的情况下调用BeginBusyState 和EndBusyState。在用户界面更新过程中,CWinApp::OnIdle将发起这些调用。
缺省地,当应用程序初始化时就分配一个COleMessageFilter对象。可以使用AfxOle
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值