使用VBscript自动closuresExcelpopup提示

我有一个应该通过Web查询访问远程监控服务器的Excel文件。 由于文件中的数据必须定期刷新和保存,所以我写了一个.vbs脚本来完成。 它工作正常,但由于服务器使用基本的身份validation安全性,无法closures,每次运行,Excel会popup一个popup式窗口“Windows安全”窗口要求input用户名和密码。 有一个“保存凭据”选项,但仍然需要用户点击“确定”继续,但系统要求没有用户交互。

search一下,我发现这个堆栈交换post和其他类似的方法,所以我修改了我的需要的脚本:

Set wshShell = CreateObject("WScript.Shell") Do ret = wshShell.AppActivate("Windows Security") If ret = True Then wshShell.SendKeys "{enter}" Exit Do End If WScript.Sleep 500 Loop 

当窗口出现时,脚本会触发,甚至在当时我关注的任何窗口上注册一个“enter”按键,但是它不能关注popup窗口本身。 它在其他应用程序如“记事本”或“计算器”上工作得非常好。 这是不是特定于popup窗口? 我如何修改脚本以专注于“Excel”popup窗口? 还有其他更简单或更可靠的替代scheme吗?

谢谢

不幸的是, AppActivateSendKeys在popup窗口和对话窗口上似乎并不总是如此。

有一个名为nircmd的命令行工具,可以做你所需要的,但是。 无论如何,这是一个伟大的工具,你可能会发现它的各种其他用途。

将它下载并放入与VBScript相同的文件夹中。 或者,将其保存在System32/SysWow64文件夹或%path%环境variables中包含的任何其他文件夹中。 然后在您的VBScript中包含以下语句:

 With CreateObject("WScript.Shell") .Run "nircmd dlg """" ""Windows Security"" click ok" End With 

dlg命令有以下参数:

 dlg [Process Name] [Window Title] [Action] [Parameters] 

我们将[Process Name]留空( """" ),只提供[Window Title] 。 请注意,这里的引号加倍,因为它们 VBSstring文字中。 对于最后一个参数,您需要指定您想要按下/单击的button的控件ID。 对于典型的对话框button( OKCancelYesNo等),您可以尝试使用nircmd的预定义控件ID: okcancelyesno等。否则,您需要使用Spy ++之类的工具确定button的控制ID并传递。