Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如何使用VBA从SharePoint下载文件?_Excel_Vba_Sharepoint - Fatal编程技术网

Excel 如何使用VBA从SharePoint下载文件?

Excel 如何使用VBA从SharePoint下载文件?,excel,vba,sharepoint,Excel,Vba,Sharepoint,我正在尝试使用VBA从SharePoint下载文件 该文件是一张图片,但一旦进入系统,该图片就无法查看 我想我下载的格式不对 Sub DownloadFromSharepoint() Dim myURL As String myURL = "https://MYSHAREPOINTSITE" Dim WinHttpReq As Object Set WinHttpReq = CreateObject("Microsoft.XMLHT

我正在尝试使用VBA从SharePoint下载文件

该文件是一张图片,但一旦进入系统,该图片就无法查看

我想我下载的格式不对

Sub DownloadFromSharepoint()
    Dim myURL As String
    myURL = "https://MYSHAREPOINTSITE"

    Dim WinHttpReq As Object
    Set WinHttpReq = CreateObject("Microsoft.XMLHTTP")
    WinHttpReq.Open "GET", myURL, False
    WinHttpReq.Send

    If WinHttpReq.Status = 200 Then
        Set oStream = CreateObject("ADODB.Stream")
        oStream.Open
        oStream.Type = 1
        oStream.Write WinHttpReq.ResponseBody
        oStream.SaveToFile ("C:\Users\DOMAIN\temp.jpg")
        oStream.Close
    End If
End Sub

以下是我当前用于从Sharepoint网站下载文件的包装器代码:

Private Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As Long, _
    ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long

Function DownloadFileFromWeb(strURL As String, strSavePath As String) As Long
    ' strSavePath includes filename
    DownloadFileFromWeb = URLDownloadToFile(0, strURL, strSavePath, 0, 0)
End Function

如果下载成功,DownloadFileFromWeb函数将返回0。

以下是我当前用于从Sharepoint网站下载文件的包装器代码:

Private Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As Long, _
    ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long

Function DownloadFileFromWeb(strURL As String, strSavePath As String) As Long
    ' strSavePath includes filename
    DownloadFileFromWeb = URLDownloadToFile(0, strURL, strSavePath, 0, 0)
End Function

如果下载成功,DownloadFileFromWeb函数将返回0。

您可以将sharepoint网站映射到网络驱动器,然后使用FileCopy方法。可能容易多了。你有myURL中图像的完整路径吗?另外,行myURL=WinHttpReq.ResponseBody对我来说毫无意义。我同意@ScottHoltzman的观点。那就是我要做的。另一种方法是使用UrlDownloadToFile api。请参阅:您可以将sharepoint网站映射到网络驱动器,然后使用FileCopy方法。可能容易多了。你有myURL中图像的完整路径吗?另外,行myURL=WinHttpReq.ResponseBody对我来说毫无意义。我同意@ScottHoltzman的观点。那就是我要做的。另一种方法是使用UrlDownloadToFile api。看:这太棒了!非常感谢你!为什么要使用别名URLDownloadToFileA?Alias子句用于指示定义的函数在其dll中有另一个名称,在本例中为“urlmon.dll”。不用说,但是如果你在sharepoint上使用Get链接,它会在直接文件URL中包含很多其他内容。您可能需要删除.xlsx之后的所有内容才能正确下载。这太棒了!非常感谢你!为什么要使用别名URLDownloadToFileA?Alias子句用于指示定义的函数在其dll中有另一个名称,在本例中为“urlmon.dll”。不用说,但是如果你在sharepoint上使用Get链接,它会在直接文件URL中包含很多其他内容。您可能必须删除.xlsx之后的所有内容才能正确下载。