首页 > 解决方案 > 即使调用的宏尚未完成,有没有办法让 VBScript 进一步工作?

问题描述

我从VBScript直接调用VBA MacroVBA 宏引导用户弹出 Internet Explorer 窗口,用户需要输入其登录凭据。

弹出窗口我想要实现的是从这个弹出窗口的 HTML 中获取元素名称并将值插入到输入字段中。

得到弹出窗口后,VBScript直到我关闭相应的 excel 文件和弹出窗口后才能继续工作。我在互联网上寻找解决方案,但没有找到任何有用的东西。是否有任何解决方法可以让我暂停弹出窗口并让 VBScript 在弹出窗口中按 ID 获取元素?

这是我当前的 VBScript 代码 -

xlsm_file_name = "webADI_template_Bankbuchungen_GL.xlsm"
'opening xlsm file and setting readonly to false
set xlobj = createobject("Excel.Application")

xlobj.Visible = TRUE
xlobj.Workbooks.Open("webADI_template_Bankbuchungen_GL.xlsm")
xlobj.Application.Run "'webADI_template_Bankbuchungen_GL.xlsm'!Sheet1.BneUploadCommon"
' from this moment VBScript does not go further until I manually close the excel file 
Set objIE = WScript.CreateObject ("InternetExplorer.Application")
objIE.Document.getElementsByName("unamebean")(0).value = "niko"  

xlobj.quit

编辑:

我发现了导致 VBScript 停止的原因,而下一行不再继续。在 VBScript 中调用的宏涉及一个长期的数据积累过程,在函数和类之间切换。

所以在弹出窗口的那一刻,宏还没有完成,因为后面还有其他父进程在等待用户的输入。

我在论坛中发现,为了确保该过程在后台发生并且VBScript 更进一步,可以使用WshShell Run -也许一个明智的解决方案是从 Shell 调用宏?- 我没有设法找到这样做的方法。

即使调用的宏尚未完成,有没有办法让 VBScript 进一步工作?

标签: excelvbavbscript

解决方案


推荐阅读