如何使用Excel VBA登录网站并下载文件

时间:2013-06-27 23:40:12

标签: excel-vba web login download vba

我一直在试图解决这个问题。

我正在尝试使用VBA和InternetExplorer对象登录网站并下载文件。问题是,一旦代码点击超链接,我就会从Internet Explorer(在我的案例中为第10版)中收到提示:“你想打开还是保存”file.xls“?我现在该怎么办?

以下是我的尝试:

  1. URLDownloadToFile 即可。这不起作用,因为没有登录就无法访问该文件。

  2. Internet Explorer 中禁用打开/保存提示。也没有去。此提示设计为安全“功能”,旨在禁用。有人提到手动放入注册表键可以解决问题,但它对我没用。 (也许我没有做正确的注册表项?

  3. 是否有一个下载管理器为Internet Explorer添加了禁用提示的内容?我还没找到。

  4. SendKeys (“%o”)'(Alt + o)。这应该“点击”打开文件。为什么不用它?因为它不可靠。用户有时会切换活动窗口。 (有没有办法将“SendKeys”发送到特定窗口?)

  5. 使用 WinHttpRequest 。这应该可行,但似乎要学习如何使用WinHttpRequest以及重写我的所有代码需要做很多工作。 (也许懒人有更多的工作)此外,调试WinHttpRequest似乎要困难得多,因为在IE中我无法看到动作,我可以看到正在发生的事情。

  6. iMacros的即可。从理论上讲,一旦我进入网站的字段,我就可以使用iMacros下载文件。 iMacros的问题是加载和关闭需要时间。它必须使用iMacro加载FireFox,然后加载网站然后关闭Firefox。我的VBA程序旨在下载数百个文件。

  7. 帮助!谢谢。

1 个答案:

答案 0 :(得分:1)

解决方案是使用cURL而不是试图获得" help"资源管理器。您可以在Equivalent cURL in VBA?找到有关如何执行此操作的详细信息。但是,不是将响应发送到MsgBox,而是打开文件并写入它。当然这实际上是在使用WinHTTPRequest而你已经在你的问题中说过了#34;这看起来像是一个疯狂的工作量" - 所以我不确定你会对解决方案感到满意。

注意 - Options属性使用起来很棘手 - 您可以在http://msdn.microsoft.com/en-us/library/windows/desktop/aa384108(v=vs.85).aspx找到有关如何使用它的详细信息。在给出的示例中,选项SslErrorIgnoreFlags设置为13056 - 即0x3300,这意味着"忽略任何和所有错误"因为它是

的总和
Unknown certification authority (CA) or untrusted root      0x0100
Wrong usage                                                 0x0200
Invalid common name (CN)                                    0x1000
Invalid date or certificate expired                         0x2000

我希望这已经足够了 - 鉴于你问题的细节,我毫不怀疑!

另一个建议(不确定这是否实用) - 使用VBA以外的平台。有许多高级语言都带有工具箱,仅用于此目的。我个人最喜欢的是PHP中的cURL,但Python中也有一些非常好的选择。但是,这是否有意义取决于你想要将它连接到什么。