VBA Internet Explorer自动化 - 如何在下载文件时选择“打开”

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (240)

这是我在stackoverflow上的第一个问题!

我一直在寻找这个问题的解决方案一段时间,但没有找到任何帮助。我可能只是在我的搜索中使用了错误的关键字,但到目前为止我没有运气。这是问题:

在VBA中,如何从Internet Explorer的文件下载对话框中选择“打开”选项?

只是为了进一步澄清,我说的是在下载文件时,IE9中屏幕底部弹出的黄橙色条。

我正在做一些VBA自动化,使用Internet Explorer从网上下载数百个PDF,但是有一个中间步骤,在我到达实际的PDF之前必须打开.fdf文件。所以我首先需要选择“打开”选项,以便我可以继续进行自动化的下一步。就像我之前说过的那样,我做了很多搜索,到目前为止没有运气。

我已经尝试过使用SendKeys希望Enter会起作用,这是最后的努力没有奏效。

在此先感谢您的帮助!

提问于
用户回答回答于

我在这里广泛报道了这一点。

主题VBA / VB.Net / VB6-单击IE下载窗口中的打开/保存/取消按钮 - 第一部分

链接http//www.siddharthrout.com/2011/10/23/vbavb-netvb6click-opensavecancel-button-on-ie-download-window/

编辑(IMP)如果您使用的是IE 9请不要忘记阅读第2部分,因为它包含并涵盖IE 9下载​​窗口的窗口结构

主题VBA / VB.Net / VB6-单击IE下载窗口中的打开/保存/取消按钮 - 第二部分

链接http//www.siddharthrout.com/2012/02/02/vbavb-netvb6click-opensavecancel-button-on-ie-download-window-part-ii/

以上链接讨论了如何使用API​​来实现您想要的。

从第一个链接......

像你我一样,我们都有名字,类似的窗口有“句柄”(hWnd),类等。一旦你知道那是什么,就更容易与那个窗口进行交互。 在这种情况下,Findwindow API通过使用窗口的类名和标题(“文件下载”)来查找特定窗口的hWnd。“打开”,“保存”和“取消”按钮本身就是窗口,但它们是主窗口的子窗口,即“文件下载”。这意味着每个人都有一个hWnd :)为了找到子窗口,我们不使用FindWindow但使用FindWindowEx。所有三个按钮“打开”,“保存”和“取消”都具有相同的类,即“按钮”。

用户回答回答于

我将快捷键发送到应用程序。这里是针对IE11的。对不起,我无法在IE9中测试。如果按住Alt,它可能会显示IE11的另一个组合键。

注意:如果IE不是计算机上的活动窗口,则代码将无法按预期运行,因此在调试模式下它将无法运行。

  • 快捷键:Alt+O
  • VBA: Application.SendKeys "%{O}"

扫码关注云+社区

领取腾讯云代金券