访问 VBA 自动化能够将 Word 文档保存到 Sharepoint 但不能保存到 Excel 电子表格

Posted

技术标签:

【中文标题】访问 VBA 自动化能够将 Word 文档保存到 Sharepoint 但不能保存到 Excel 电子表格【英文标题】:Access VBA automation able to save Word document to Sharepoint but not Excel spreadsheet 【发布时间】:2018-11-07 05:34:32 【问题描述】:

我有一个 Access 数据库,它创建文件并将它们保存到内部网络上的 Sharepoint。在两种情况下,文件是 Word 文档,将它们保存到 Sharepoint 可以正常工作。其中两个文件是 Excel 电子表格,使用 save 或 savecopy 保存它们不起作用。最后一个文件是 PowerPoint,保存也失败了。

有效的 Word 保存如下所示:

Set objWord = New Word.Application
Set objDoc = objWord.Documents.Add
objWord.Visible = True
Set objSelection = objWord.Selection
Set objRange = objDoc.Range

Creation of document

Dim SPAddress As String
SPAddress = GetSPAddress(iProjectId) & "ProjectFactSheet_" & sSiteName & "_" & Format(Now(), "yyyymmddhhnnss") & ".docx"
objDoc.SaveAs SPAddress

失败的 Excel 保存如下所示:

Set oExcelApp = CreateObject("Excel.Application")
oExcelApp.Visible = True
oExcelApp.AskToUpdateLinks = False
oExcelApp.DisplayAlerts = False
oExcelApp.Workbooks.Open ("c:\apps\" & strReportName)
SPAddress = GetSPAddress()
oExcelApp.ActiveWorkbook.SaveAs SPAddress & strReportName
savecopyas 也会出错。

此操作失败,错误文件名无法访问。该文件可能已损坏,位于没有响应或只读的服务器上。

Public Function GetSPAddress(Optional lngQuaID As Long) As String
    GetSPAddress = ""

    If IsNull(lngQuaID) Or lngQuaID = 0 Then
        GetSPAddress = DLookup("SPBasePath", "AppData")
    Else
        If IsNull(DLookup("[SPPath]", "QualificationLog", "[QuaID] = " & lngQuaID)) Then
            GetSPAddress = DLookup("SPBasePath", "AppData")
        Else
            GetSPAddress = DLookup("[SPPath]", "QualificationLog", "[QuaID] = " & lngQuaID)
        End If
    End If
End Function

【问题讨论】:

用于保存的路径是什么,与工作 Word 路径相比如何? SP文件夹的路径相同。只有文件名不同。 请使用问题下方的edit 链接添加GetSPAddress 的代码。我确实注意到,对于 Word,您将一个值传递给此方法,但对于不起作用的代码却没有? 如果您Debug.Print Excel 路径可以手动保存到该位置吗? 是的,我可以手动保存。 【参考方案1】:

我能想到的唯一建议是在您打开报告时设置一个工作簿变量,这样您就可以绝对确定要保存哪个文件(尽管这本身不应该导致错误...)

Dim wb As Object   '<<<
Set oExcelApp = CreateObject("Excel.Application")
oExcelApp.Visible = True
oExcelApp.AskToUpdateLinks = False
oExcelApp.DisplayAlerts = False
Set wb = oExcelApp.Workbooks.Open("c:\apps\" & strReportName) '<<<
SPAddress = GetSPAddress()
wb.SaveAs SPAddress & strReportName '<<<

【讨论】:

我试过这个,我得到一个错误运行时错误'1004'。无法访问该文件。请尝试以下操作之一: 确保指定的文件夹存在。 ... 保存到的路径是 https:\\eu001-sp.shell.com\sites\AAAAA9233\TestForLIR\Test4.xls https:\\ https:// ?我能够使用相同类型的路径将 Excel 中的 SaveAs 运行到 Sharepoint 库中,因此它可以工作...... 蒂姆说得对。我觉得很傻,但我用的是\而不是/。一旦我进行了更改,它就可以正常工作。谢谢!

以上是关于访问 VBA 自动化能够将 Word 文档保存到 Sharepoint 但不能保存到 Excel 电子表格的主要内容,如果未能解决你的问题,请参考以下文章

只能为组VBA Word文档访问此成员

从共享驱动器加载的 Word 文档的本地副本无法使用 VBA 另存为 PDF 方法。不保存文档

VBA 代码(如果需要)将新的 Word 文档保存在与其他 Word 文档相同的目录中

Excel VBA:将工作簿另存为 Word 文档

VBA在Excel中为Word文档执行宏

为啥每次使用 VBA 保存 word 文档时文件大小都会增加?