Как загрузить файл из Sharepoint на локальный диск с помощью VBA в макросе Excel

Я пытаюсь загрузить файл SharePoint с помощью VBA в макросе Excel. Я скопировал код с этого сайта, но он не работает. Он загружает файл, но файл не открывается должным образом. Правильный файл имеет размер 28 КБ, но размер загружаемого файла составляет всего 4 КБ. При попытке открыть выдает сообщение об ошибке, в котором говорится, что формат или расширение файла недействительны. Убедитесь, что файл не поврежден. Файл загружается и открывается без проблем вручную, но код не работает. Любая помощь будет принята с благодарностью.

https://sandvik.sharepoint.com/team/PUMebaneDataHub/Shared%20Documents/Forms/Allitems.aspx

Выше указан URL-адрес, по которому находится файл. Файл: Форма регистрации инцидента с Мебане.xlsx

вот фактическая скопированная ссылка из Sharepoint https://sandvik.sharepoint.com/:x:/r/teams/PUMebaneDataHub/Shared%20Documents/Mebane%20Incident%20Intake%20Form.xlsx?d=w8031d09838fe4673854fa5241b259fca&csf=1&web=1&e=ty1IRb

Вот мой код VBA.

Option Explicit
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 

Sub DownloadFileFromWeb()
    Dim i As Integer
    Const strUrl As String = "https://sandvik.sharepoint.com/teams/PUMebaneDataHub/Shared%20Documents/Mebane Incident Intake Form.xlsx"
    Dim strSavePath As String 
    Dim returnValue As Long 
    strSavePath = "C:\temp1\Mebane Incident Intake Form.xlsx"
    returnValue = URLDownloadToFile(0, strUrl, strSavePath, 0, 0) 
End Sub 

см. выше... я ожидал, что он загрузит файл..... но он загружает мусорный файл, который не открывается.


1
538
1

Ответ:

Решено

Самый простой подход:

Dim wb As Workbook
Set wb = Workbooks.Open(UrlToWorkbook)
wb.SaveAs savePathHere

Если у вас возникли проблемы с открытием файла, попробуйте удалить ? и все, что следует за ним, из URL-адреса.

См. https://sharepointcass.com/2021/03/11/what-do-the-parameters-in-a-shared-sharepoint-onedrive-link-mean/, чтобы узнать, что представляют собой эти нечетные части URL-адреса (например, ) /:x: и т. д. на самом деле это значит.