我有一个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
[...]
答案 0 :(得分:0)
发现一些对我有用的东西...
事实证明,问题出在Sharepoint Online中使用的URL格式。通过“复制链接”获得链接时,该链接包括有关文件类型和访问权限的信息,这些信息将授予链接持有人。它还包括文件的GUID,而不是路径和文件名。 我进行程序访问需要的是“老式”链接格式。有一种方法可以解决该问题:显示文件的版本历史记录,然后将URL复制到最新版本。我的旧VBA编码将接受该URL。
(我还注意到,如果文件是通过Ms-Teams共享的,则Teams中的UI将提供2种不同的格式以直接从文件资源管理器进行复制。)
我的问题解决了。 如果有人知道的更好-例如,一种在VBA中通过GUID使用URL的方法;那么任何其他知识都很好!