提问人:Eliah Thommen 提问时间:11/1/2023 更新时间:11/3/2023 访问量:44
在 Word VSTO 外接程序中访问“文档库属性”:在 SharePoint 外部检索
Accessing 'Document Library Properties' in Word VSTO AddIn: Retrieval Outside of SharePoint
问:
我目前正在使用 VB.NET 为 Microsoft Word 开发 VSTO 外接程序。 我的主要目标是访问 Word 文档的“文档库属性”。对于我的项目来说,在 Word 环境中直接访问这些属性(而不是通过 SharePoint)至关重要。这一点尤为重要,因为即使文件不再存储在 SharePoint 中,我也要检索这些属性。 甚至可以在 Word 环境中访问这些属性吗?即使文件不再存储在 SharePoint 中,这些属性在“文件 --> 信息”下仍然可见。 为了消除任何误解,以下是对各种文档属性的描述。关于文档属性的 MS 支持
我已经尝试访问“BuiltInDocumentProperties”和“CustomDocumentProperties”。但是,我从未得到正确的值。
有没有人对此有经验或见解?我将不胜感激任何指导或建议。感谢所有花时间提供帮助的人!
答:
在这里从遥远的记忆中工作......
查看 ActiveDocument.ContentTypeProperties
一些问题:
如果文档没有任何内容,我认为,当您访问此集合时,您会收到一个不可捕获的错误。
某些列可能不存在于集合中,例如计算列。
各个项可以是许多不同的类型,并且可能具有内部结构,您可能需要制定这些结构以避免在检索值时出现运行时错误。例如,包含超链接的列(无论是“只是”超链接还是指向图片的链接)可能会以字符串数组的形式出现,其中包含编号为 0 和 1 的元素。当您尝试使用 TypeName() 函数检索类型时,某些类型甚至可能导致 Word 崩溃(例如,在这里的测试中,查找类型对我使用的 Word 的旧 2013 版本执行此操作。因此,使用实际存储在相关 CustomXMLPart 中的数据可能更安全。
这些值还存储在自定义 XML 部件中,该部件由可使用 SchemaXml 属性检索的 XML 描述。架构 Xml 不是特别容易解释,但可能会有所帮助
您应该能够检索模式部分(它实际上包含多个模式),例如
Dim schemacxp As CustomXMLPart
Dim cxps As CustomXMLParts
Set cxps = ActiveDocument.CustomXMLParts.SelectByNameSpace("http://schemas.microsoft.com/office/2006/metadata/contentType")
If Not (cxps Is Nothing) Then
Set schemacxp = cxps(1)
End If
您应该能够以类似的方式检索数据部分,但要查找 NamespaceUri“http://schemas.microsoft.com/office/2006/metadata/properties”。
您可能会发现 XML 中使用的名称并不总是与 SharePoint 中定义的名称完全相同,并且您必须以某种方式匹配它们,例如使用 ContentTypeProperties.GetItemByInternalName,但我必须重新审视它,看看它是否有用。
评论