无法使用Excel VBA打开从Sharepoint 2013下载的Excel文件
我尝试使用以下代码从Sharepoint 2013下载单个Excel文件 选项显式无法使用Excel VBA打开从Sharepoint 2013下载的Excel文件,excel,vba,sharepoint,xmlhttprequest,adodb,Excel,Vba,Sharepoint,Xmlhttprequest,Adodb,我尝试使用以下代码从Sharepoint 2013下载单个Excel文件 选项显式 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/Mast
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无法打开文件Test.xlsx,因为文件格式或文件扩展名无效。验证文件是否已损坏,以及文件扩展名是否与文件格式匹配
我已经检查了内容类型,它显示为Text/Html;UTF-8。它不显示内容配置
有人能帮我解释一下为什么文件没有打开吗?这不是一个完整的答案,但更像是一个评论/建议,因为我没有足够的声誉发表评论 在GET查询中设置内容类型标题似乎没有任何区别。我们需要检查服务器发送的
WinHttpReq.getResponseHeader(“内容类型”)
,在本例中,它似乎是Text/Html;UTF-8
如果将myURL变量中使用的URL复制粘贴到浏览器中,是否会出现“文件另存为”对话框
如果您使用where可以在composer中创建请求,并检查响应以优化您的需求,并查看下载文件是否还需要任何其他头(如cookie、身份验证等),则可以更好地分析您的请求和响应。在这种情况下,您可能会因为某些身份验证问题而返回登录页(html),而不是excel文件
打开用Notepad.exe保存的DestFile,查看它实际上是XLSX文件(以字符PK开头)还是HTML或其他文本文件