我正在使用以下 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来源,绝对可以用。