【问题标题】:VBA - How to open & use workbooks/documents stored on Sharepoint Online (Office365)VBA - 如何打开和使用存储在 Sharepoint Online (Office365) 上的工作簿/文档
【发布时间】:2019-04-10 05:27:41
【问题描述】:

我有一个 Excel-VBA 应用程序,它可以打开并读取另一个工作簿和一个 Word 文档。路径和文件名存储在工作表字段中。

目前,该应用从私有域 Sharepoint 打开文件。我们迁移到 Office365。我在调整代码时遇到问题。当存储在 Sharepoint365 上时,我不了解如何管理(保留和使用)对 office 文件的引用。链接是动态的吗?它们应该如何通过 VBA 访问?认证呢?

当我尝试用 Office365 URL 简单地替换本地私有 Sharepoint 文档/工作簿的当前 URL 时,VBA 方法成功打开文件但它们的内容不可用(我得到空白文档)。

我查看了支持和论坛,但找不到有关此问题的全面信息。我应该使用 REST API 吗?如果是这样,如何?任何人都可以为新手指出或写一个逐步的解释吗?

代码很简单:

1- 对于 Excel 工作簿(要做:在范围内打开和搜索;问题 wkb 为空白)

[...]

Set bookURLs = Workbooks.Open(fileName)
Set searchRange = bookURLs.Worksheets(1).Columns(1)

[...]

2- 对于 Word 文档(要做:使用书签打开和搜索;问题文档为空白)

[...]

Set appWord = New Word.Application
With appWord
    Set docTarget = .Documents.Open(fileName)
    docTarget.Bookmarks([...]).Range.Copy

[...]

【问题讨论】:

    标签: vba sharepoint-online


    【解决方案1】:

    发现了一些对我有用的东西......

    原来问题出在 Sharepoint Online 中使用的 URL 格式。当通过“复制链接”获得链接时,它包含有关文件类型的信息以及将授予链接持有者的访问权限。它还包括文件的 GUID,而不是路径和文件名。 编程访问需要的是“老式”链接格式。有一种方法可以得到后者:显示文件的版本历史并将 URL 复制到最新版本。我的旧 VBA 编码将接受此 URL。

    (我还注意到,如果文件是通过 Ms-Teams 共享的;Teams 中的 UI 将提供 2 种不同的格式以直接从文件资源管理器中复制。)

    我的问题解决了。 如果有人知道得更好——例如,一种在 VBA 中使用带有 GUID 的 URL 的方法;那么任何额外的知识都会很好!

    【讨论】:

    • 它也对我有用。您不需要转到版本历史记录,只需从字符串末尾删除 GUID,例如将:“https:/collab/mysite/myfile.xlsx15DSIHIUDF1226”更改为:“https:/collab/mysite/myfile .xlsx"
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-13
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多