excel - Excel 文件通过 VBA 代码从 SharePoint 下载后无法打开

我正在使用以下 VBA 代码下载 excel 文件在网上找到,但下载后尝试打开文件时出现错误 - excel 无法打开文件,因为文件格式无效......”

此问题仅适用于使用以下代码下载的文件,如果我直接下载它可以正常工作

我正在使用 Office 365

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 download_file()
    Dim downloadStatus As Long
    Dim url As String, destinationFile_local As String

    url = "http://sp2019/library/test.xlsx"
    
    destinationFile_local = "C:\test.xlsx"
    downloadStatus = URLDownloadToFile(0, url, destinationFile_local, 0, 0)

    If downloadStatus = 0 Then
        MsgBox "Download successfully"
    Else
        MsgBox "Download failed"
    End If
End Sub

回答1

我有一个修复程序,或者至少有一个解决方法,尽管我无法准确解释它为什么起作用。背景信息:我在包含链接 SharePoint 列表的数据库中使用 URLDownloadToFile。有问题的子程序使用 SQL 针对与我要下载的文件位于同一站点上的链接 SharePoint 列表创建记录集,如果记录集的记录数大于 0,则下载文件。这一切都很好。

在最近的一些跟踪问题的测试过程中,我创建了一个子程序,它调用相同的 URLDownloadToFile 例程来下载相同的文件,但之前没有创建记录集。每当我运行 sub 时,最终在目标文件夹中的文件将是 194 KB,并且包含 HTML。

经过反复试验,我发现只要我在运行文件下载代码之前使用链表创建了一个记录集,它就可以正常工作,并且即使我将包含记录集创建的代码注释掉,它仍然可以正常工作,只要因为我保持数据库打开。本质上,在运行 URLDownloadToFile 之前,您需要做一些事情来打开到 SharePoint 站点的连接。希望这可以帮助。

回答2

您绝对可以使用 URL 路径打开文件:

https://translate.google.com/translate?hl=en&sl=en&tl=zh&u=https://SITE//PATH/File.extension

路径可能很棘手,我建议您在线打开 excel 文件,然后单击 Viewwing :“在桌面应用程序中打开”

然后点击Excel Desktop App > File > Info Copy File Path 这是一个非常可靠的sharepoint URL来源,绝对可以用。

相似文章