使用vba从网上下载excel文件

我有以下代码从网上下载一个特定的文件。 该网页有文件的名称,如果你点击它,你会得到“你想打开或保存…….从……?打开/保存/取消。这是我迄今为止:

Dim ie As InternetExplorer Dim html As HTMLDocument Set ie = New InternetExplorer ie.Navigate "http://customerservice.ciena.com/BidRegister/Queue.aspx?REGIONID=3" Set fe1 = html.getElementById("ctl00_P1_rdgFileList_ctl00_ctl00_btnGetFile") fe1.click 

在这一点上,我收到popup信息,我正在告诉你以上。 我怎样才能继续我的代码,以避免这popup,并直接将文件保存在给定的位置? 有没有直接保存文件的代码行?

从我记得使用Internet Explorer对象,你不能绕过它的安全提示。

我通过使用post / get请求通过一个serverhttp对象来获得这个工作,获取文件作为响应者,然后使用ADODB对象直接将主体保存到预定位置。

下面是一个GET请求的例子,它应该直接从URL下载文件:

 set objhttp = new MSXML2.ServerXMLHTTP60 URL = "http://www.princexml.com/samples/catalog/PrinceCatalogue.pdf" objhttp.Open "GET", URL, False objhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" objhttp.send If objhttp.Status = 200 Then Set oStream = CreateObject("ADODB.Stream") oStream.Open oStream.Type = 1 oStream.Write objhttp.responseBody oStream.SaveToFile "filepath and filename.pdf", 2 oStream.Close End If 

为了使这个工作的POST请求,你需要更多的信息。 要尝试find信息,您需要使用Internet Explorer上的F12 Developer工具:

  • InternetExplorer打开您正在下载的网页上
  • 按F12打开开发人员工具
  • 点击“networking”
  • 点击“播放”button(“启用networkingstream量捕捉”)
  • 现在下载该文件,您应该看到请求在networking摘要中popup的文件的POST。
  • 双击F12工具中的POST行,然后单击“请求正文”,无论发送到URL的内容是否为金矿,请求文件。 如果你可以解释,并在你的代码中进行部署,那么你已经破解了它。

最后要做的是在上面的代码中改变两行:

  objhttp.Open "POST", URL, False objhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" objhttp.send (This is where you put the data string ie the REQUEST BODY) 

对不起,我不能再指定了,POST请求主体可以有很多格式,所以没有看到你的系统的例子,我不能再进一步了。