VBA Excel下载网页完成

我试图下载一个完整的网页。 换句话说,这个过程自动化:

1-打开网页2-点击保存为3-select完成4-closures网页。

这是我到目前为止:

URL = "google.com" 'for TEST Dim IE Set IE = CreateObject("Internetexplorer.Application") IE.Visible = False IE.Navigate URL Do Loop While IE.Busy = True Dim i Dim Filename i = 0 Filename = "C:\Test.htm" IE.Document.ExecCommand "SaveAs", False, Filename 

当我在最后一行运行代码时,会出现一个保存文件对话框。 有什么办法可以压制这个吗?

非常感激任何的帮助。

另存为对话框不能被禁止 :

从脚本调用此方法时,不能取消保存HTML文档对话框。

这也是一个模式对话框,你不能自动点击“保存”button。 面对这种types的对话时,VBA执行会在等待手动用户input时暂停。

而不是使用IE.Document.ExecCommand方法,您可以尝试读取页面的HTML并使用标准I / O函数将其打印到文件中。

 Option Explicit Sub SaveHTML() Dim URL as String Dim IE as Object Dim i as Long Dim FileName as String Dim FF as Integer URL = "http://google.com" 'for TEST Filename = "C:\Test.htm" Set IE = CreateObject("Internetexplorer.Application") IE.Visible = True IE.Navigate URL Do Loop While IE.Busy 'Creates a file as specified ' this will overwrite an existing file if already exists CreateObject("Scripting.FileSystemObject").CreateTextFile FileName FF = FreeFile Open Filename For Output As #FF With IE.Document.Body Print #FF, .OuterHtml & .InnerHtml End With Close #FF IE.Quit Set IE = Nothing End Sub 

我不确定这是否会给你正是你想要的,或不。 还有其他的方法可以从网上获取数据,最好的办法是从XMLHTTP请求中获取原始的HTML并将其打印到文件中。

当然,我们实际上并不需要HTML格式的整个网页,所以如果你想从网页上抓取特定的数据,XMLHTTP和DOM是最好的方式,没有必要将其保存到文件中。

或者,您可以使用Selenium包装来自动化IE,这比使用相对较less的InternetExplorer.Application类的本地方法更加健壮。

还要注意,你正在使用一个相当粗糙的方法来等待网页加载( Loop While IE.Busy )。 虽然这有时可能有效,但可能并不可靠。 关于如何在SO上正确地做到这一点,有几十个问题,所以我会在这里引用你的searchfunction,稍微调整一下这个代码。