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