2014-12-17 3 views
0

я попытался следующий код, чтобы загрузить один файл Excel с Sharepoint 2013.не в состоянии открыть загруженный файл Excel с Sharepoint 2013 с помощью Excel VBA

Option Explicit

Sub TxtStream() 

Dim myURL As String, DestFile As String, myHeader As String 
Dim Usr as string, Pwd as string 
Dim oStream As Object 

Usr="": Pwd="" 

myURL = "https://Server.Name/teams/Forms/AllItems.aspx/MasterFile.xlsx" 
DestFile = "C:\Test.xlsx" 

Dim WinHttpReq As Object 
Set WinHttpReq = CreateObject("MSXML2.XMLHTTP") 

'WinHttpReq.Open "HEAD", myURL, False, Usr, Pwd 
'WinHttpReq.Send 
'myHeader = WinHttpReq.getAllResponseHeaders() 
'Debug.Print myHeader 
'myHeader = WinHttpReq.getResponseHeader("Content-Disposition") 
'Debug.Print myHeader 
'myHeader = WinHttpReq.getResponseHeader("Content-Type") 
'Debug.Print myHeader 

WinHttpReq.Open "GET", myURL, False, Usr, Pwd 
WinHttpReq.setRequestHeader "content-type", "application/octet-stream" 
WinHttpReq.Send 

myURL = WinHttpReq.responsebody 

If WinHttpReq.Status = 200 Then 
    Set oStream = CreateObject("ADODB.Stream") 
    oStream.Type = 1 
    oStream.Open 
    oStream.Position = 0 
    oStream.Write WinHttpReq.responsebody 
    oStream.SaveToFile DestFile, 2 
    oStream.Close 
End If 

End Sub 

скачивает нормально, но когда я пытаюсь открыть его в Excel 2010, он снимает ошибку:

Excel cannot open the file Test.xlsx because the file format or file extension is not valid. Verify the file has not been corrupted and the file extension matches the format of the file.

Я проверил Content-Type, и это показывает, как текст/HTML, UTF-8. Он не показывает Content-Disposition.

Может кто-нибудь помочь, почему файл не открывается?

ответ

0

Это не полноценный ответ, а скорее комментарий или предложение, так как у меня недостаточно репутации для публикации комментариев.

Настройка заголовка содержимого в вашем запросе GET, похоже, не имеет никакого значения. Нам нужно проверить WinHttpReq.getResponseHeader("Content-Type"), отправленный сервером, который в этом случае кажется Text/Html; UTF-8.

Если вы скопируете URL-адрес, используемый в переменной myURL, в ваш браузер, вы получите диалоговое окно «сохранить файл как»?

Улучшенный анализ ваших запросов и ответов может быть выполнен, если вы используете Fiddler Web Debugger, где вы можете создавать запросы в композиторе и проверять ответы, чтобы уточнить ваши требования и посмотреть, не являются ли какие-либо другие заголовки (например, файлы cookie, аутентификации и т. Д.) требуется для загрузки файла. В этом случае вы можете вернуть страницу входа (html) из-за некоторых проблем с проверкой подлинности, а не файла excel.

Открыть файл DestFile, сохраненный в Notepad.exe, чтобы узнать, действительно ли он XLSX-файл (начиная с символов PK) или HTML или другой текстовый файл.