将 Excel 文件保存到 Sharepoint 失败

问题描述 投票:0回答:1

我在尝试保存到 Sharepoint 时遇到此代码错误。代码较长,但包括相关部分。

Dim fso As Object
Dim template As Workbook
Dim TempPath As String  'path is set with folder picker

Set fso = CreateObject("Scripting.FileSystemObject")
currentname = fso.GetBaseName(ThisWorkbook.Name)

Set template = Workbooks.Open(TempPath)
DoEvents

If InStr(ThisWorkbook.Path, "/") > 0 Then 'check if it's saving to Sharepoint
urlpath = Replace(ThisWorkbook.Path, " ", "%20")
urlname = Replace(currentname, " ", "%20")
Savename = urlpath & "/" & urlname & "_New" & ".xlsm"
Else
Savename = ThisWorkbook.Path & "\" & currentname & "_New" & ".xlsm"
End If

currentformat = template.FileFormat
template.SaveAs Filename:=Savename, FileFormat:=currentformat

当“ThisWorkbook”位于系统文件库中时,代码可以工作,但当文件位于 Sharepoint 中时,代码会出错。我录制了一个“保存”宏,系统将文件名显示为(示例)https://“companyname.sharepoint.com/sites/team_data/Shared%20Documents/folder%20location” 如果我专门用该地址指定 Savename,它就可以工作。因此,问题似乎在于使用工作簿路径和名称的串联。如果我在消息框中显示串联名称,它看起来与直接路径完全相同。我无法弄清楚串联有什么问题。 sharepoint 的 workbook.path 返回时带有空格而不是 %20。我添加了“替换”代码来添加 %20 以匹配保存宏的显示方式。

excel vba sharepoint
1个回答
0
投票

这对我来说没问题:

Sub SPTester()
    Dim fso As Object
    Dim template As Workbook, newname, Savename
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    newname = fso.GetBaseName(ThisWorkbook.Name) & "_New.xlsm"
    
    Set template = Workbooks.Open("https://contoso.sharepoint.com/sites/Site1/TestLibrary/test2.xlsm")
    DoEvents
    
    Savename = ThisWorkbook.Path & "/" & newname 'windows won't complain about "/"
    
    Debug.Print "saving as..." & vbLf & Savename
    
    template.SaveAs Filename:=Savename, FileFormat:=template.FileFormat
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.