2013-04-29 4 views
0

Спасибо за этот отличный ресурс, он очень помог мне, но у меня возникла проблема с использованием excel VBA для загрузки файлов excel с удаленного сервера. Я подозреваю, что это нечто очевидное, что мой код отсутствует.Скачать файл с

Проблема, с которой я столкнулась, заключается в том, что все загруженные файлы всегда имеют размер 15 КБ независимо от размера или содержимого исходного файла, и все они имеют тот же контент, который, как представляется, просто скопирован с веб-сайта хоста чем файл, который я пытаюсь загрузить. Я попытался использовать различные расширения файлов, включая 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 

Сердечные приветы

Роб

+0

Я использую этот код VBScript хотя и не VBA. http://vbscriptautomation.net/73/download-files-using-vbscript/ – glh

ответ

0

URLDownloadToFile() буквально и просто загружая страницу .aspx, которая находится на сервере - при доступе через обычный веб-Broswer, что страница имеет на стороне сервера логики, чтобы получить и загрузите файл Excel, который вы пытаетесь получить. Файлы css, на которые он жалуется, являются файлами стилей, которые используются для управления отображением страницы .aspx.

Вам нужно будет использовать что-то более сложное, чем URLDownloadToFile() сохранить файл, который вы хотите, например, установка на объект Application IE, как описано здесь: http://www.mrexcel.com/forum/excel-questions/502298-need-help-regarding-ie-automation-using-visual-basic-applications.html