从中下载文件

时间:2013-04-29 09:41:52

标签: excel-vba vba excel

感谢这个优秀的资源,它对我有很大帮助,但是我在使用excel VBA从远程服务器下载excel文件时遇到了问题。我怀疑我的代码缺乏显而易见的东西。

我遇到的问题是所有下载的文件大小总是15KB,无论原始文件的大小或内容如何,​​并且都带有相同的内容,这些内容似乎只是从主机网站复制的文本,而不是我试图下载的文件。我尝试过使用各种文件扩展名,包括CSV,但结果是一样的。

当我打开下载的文件时,excel表示文件格式和扩展名不匹配,然后说,由于加载过程中出现问题,文件“丢失文件C:\ remote \ css \ logon.css”和“丢失文件C:\ remote \ javascript \ ramjsfx.menu.css“,这对我来说是希腊语。

    Sub DownloadFilefromWeb()

Const E_OUTOFMEMORY As Long = &H8007000E
Const E_DOWNLOAD_FAILURE As Long = &H800C0002

Dim InitialName As String
Dim Msg As String
Dim RegExp As Object
Dim RetVal As Long
Dim SaveName As String
Dim SavePath As String
Dim URL As String

URL = InputBox("Enter the download URL below.", "Download from Internet")
If URL = "" Then Exit Sub

Set RegExp = CreateObject("VBScript.RegExp")
RegExp.IgnoreCase = True
RegExp.Pattern = "^(.*\/)(.+)$"
InitialName = RegExp.Replace(URL, "$2")
Set RegExp = Nothing

If InitialName = "" Or InitialName = URL Then
MsgBox ("Error - Missing File Name")
Exit Sub
End If

SavePath = Application.GetSaveAsFilename(InitialName)
If SavePath = "" Then Exit Sub
'SavePath = "C:\Users\Rob's Laptop\Documents\Test\Test3.xls"
'URL = "https://remote.picosting.co.uk/Remote/fs/files.aspx?path=%5c%5cPISBS2011%5cfiles%5cRob%  20Shaw%27s%20test%20folder%5cTest1"

RetVal = URLDownloadToFile(0&, URL, SavePath, 0&, 0&)

Select Case RetVal
Case 0
Msg = "Download Successful"
Case E_OUTOFMEMORY
Msg = "Error - Out of Mmemory"
Case E_DOWNLOAD_FAILURE
Msg = "Error - Bad URL or Connection Interrupted"
Case Else
Msg = "Unknown Error - " & RetVal
End Select

MsgBox Msg

End Sub

亲切的问候

罗布

1 个答案:

答案 0 :(得分:0)

URLDownloadToFile()从字面上简单地下载服务器上的.aspx页面 - 当通过普通的网络浏览器访问时,该页面执行服务器端逻辑以获取和下载您尝试获取的Excel文件。它抱怨的css文件是样式表文件,用于控制.aspx页面的显示。

您需要使用比URLDownloadToFile()更复杂的东西来保存您想要的文件,例如设置IE Application对象,如下所述: http://www.mrexcel.com/forum/excel-questions/502298-need-help-regarding-ie-automation-using-visual-basic-applications.html