你可以尝试在程序中设置一个延时,让VBA程序等待几秒钟后再打开导出的表格。这样可以让导出的表格有足够的时间来打开,并且VBA程序也可以识别它。例如,你可以在程序中添加如下代码:
Application.Wait (Now + TimeValue("0:00:05"))
这段代码会让VBA程序等待5秒钟,然后再打开导出的表格。当然,你可以根据需要调整这个延时的时间。
此外,还有一种解决方法是使用VBA中的DoEvents函数。该函数可以让VBA程序暂时放弃对CPU的控制权,以便其它程序有机会运行。这样,导出的表格就可以在VBA程序运行期间被打开了。例如,你可以在程序中添加如下代码:
DoEvents
这段代码会让VBA程序暂时放弃对CPU的控制权,以便其它程序可以运行。但是,这种方法不如使用延时的方法可靠,因为它依赖于操作系统的调度策略。有时候,即使使用了DoEvents函数,导出的表格也无法被打开。
感谢不苦老师的回复。
对于加上
Application.Wait (Now + TimeValue("0:00:05"))
DoEvents
这两个语句,我原来考虑过也测试过,结果是:
所运行的sub中Application.Wait (Now + TimeValue("0:00:05"))语句能够等待5秒,DoEvents(这个语句是否有释放控制权,不是很清楚,至少没有起到导出表可以打开),但SAP导出的表格仍然是等到sub程序运行到end sub 这条语句后,程序完成结束后,SAP导出的表才激活并打开,怪就怪在这里,变成等待或释放控制权的程序语句运行了仍然无法使导出表打开,仍然是程序运行完后才打开。
无法理解。