首页 新闻 会员 周边 捐助

征集SAP导出表VBA程序无法识别的解决办法

0
悬赏园豆:100 [待解决问题]

通过VBA代码自动导出SAP查询表,SAP导出的表格均是在VBA程序全部跑完或在程序设置中断时才会打开,如果要对导出的表格进行后续操作,根本无法通过程序识别,因为VBA程序跑完EXCEL表才打开(即导出表是在程序运行完毕之后),好象是我们在运行程序时,VBA的进程占用了导出表无法打开似的,好比只有一条路,VBA走了SAP导出表就不能同时走,两个人都不会碰面,所以了无法交流了)是这样?没有解决方法了?怪了,翻了很多贴子,就是没有找到办法。

现向SAP或VBA方面的专家询求帮助,解释一下这方面的知识,如何解决,在此先感谢帮助的朋友。
一笑而过035的主页 一笑而过035 | 初学一级 | 园豆:102
提问于:2022-12-15 11:30
< >
分享
所有回答(1)
0

你可以尝试在程序中设置一个延时,让VBA程序等待几秒钟后再打开导出的表格。这样可以让导出的表格有足够的时间来打开,并且VBA程序也可以识别它。例如,你可以在程序中添加如下代码:

Application.Wait (Now + TimeValue("0:00:05"))

这段代码会让VBA程序等待5秒钟,然后再打开导出的表格。当然,你可以根据需要调整这个延时的时间。

此外,还有一种解决方法是使用VBA中的DoEvents函数。该函数可以让VBA程序暂时放弃对CPU的控制权,以便其它程序有机会运行。这样,导出的表格就可以在VBA程序运行期间被打开了。例如,你可以在程序中添加如下代码:

DoEvents

这段代码会让VBA程序暂时放弃对CPU的控制权,以便其它程序可以运行。但是,这种方法不如使用延时的方法可靠,因为它依赖于操作系统的调度策略。有时候,即使使用了DoEvents函数,导出的表格也无法被打开。

不苦 | 园豆:20 (初学一级) | 2022-12-15 17:03

感谢不苦老师的回复。
对于加上
Application.Wait (Now + TimeValue("0:00:05"))
DoEvents
这两个语句,我原来考虑过也测试过,结果是:
所运行的sub中Application.Wait (Now + TimeValue("0:00:05"))语句能够等待5秒,DoEvents(这个语句是否有释放控制权,不是很清楚,至少没有起到导出表可以打开),但SAP导出的表格仍然是等到sub程序运行到end sub 这条语句后,程序完成结束后,SAP导出的表才激活并打开,怪就怪在这里,变成等待或释放控制权的程序语句运行了仍然无法使导出表打开,仍然是程序运行完后才打开。
无法理解。

支持(0) 反对(0) 一笑而过035 | 园豆:102 (初学一级) | 2022-12-16 15:05
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册