VBA-如何打开和使用存储在Sharepoint Online(Office365)上的工作簿/文档

时间:2019-04-08 21:07:20

标签: vba sharepoint-online

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

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

当我尝试用Office365 URL简单地将当前URL替换为本地私有Sharepoint文档/工作簿时,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

[...]

1 个答案:

答案 0 :(得分:0)

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

事实证明,问题出在Sharepoint Online中使用的URL格式。通过“复制链接”获得链接时,该链接包括有关文件类型和访问权限的信息,这些信息将授予链接持有人。它还包括文件的GUID,而不是路径和文件名。 我进行程序访问需要的是“老式”链接格式。有一种方法可以解决该问题:显示文件的版本历史记录,然后将URL复制到最新版本。我的旧VBA编码将接受该URL。

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

我的问题解决了。 如果有人知道的更好-例如,一种在VBA中通过GUID使用URL的方法;那么任何其他知识都很好!