gpt4 book ai didi

sharepoint - 使用VBA读取SharePoint文档库中文件的元数据或文件属性

转载 作者:行者123 更新时间:2023-12-04 18:32:30 25 4
gpt4 key购买 nike

我在SharePoint网站上有几百个Word模板(DOTX)。许多用户团队使用这些模板。

当用户需要自定义此文档时,可以单击SharePoint上的特殊链接以从他们选择的模板中生成一个新文档(DOCX)。始终需要将此新文档文件“链接”回SharePoint上的模板文件。如果文档丢失该链接,则它将无法正常工作,并被视为“损坏”。

文档中断时,我需要重新建立指向SharePoint上正确模板的链接。以编程方式执行此操作很有意义,因此我可以将解决方案分发给我的团队。

我想给每个模板文件一个唯一的模板ID(一个三位数字),存储在元数据或自定义文件属性中。从模板生成新文档后,模板ID会自动保存到文档中,因此已设置好。现在,我只需要使用VBA扫描SharePoint文档库中的模板文件以查找匹配的模板ID。找到该链接后,我可以重新建立链接,一切顺利。

我基本上是在寻找这个:

Sub DocFixer()

Dim objTemplate as Template
Dim objBrokenDoc as Document

Set objBrokenDoc = ActiveDocument

For each objTemplate in "\\SharePoint\Template Library\".Templates
If objTemplate.Properties("Template ID").Value = objBrokenDoc.Properties("Template ID").Value Then
objBrokenDoc.AttachedTemplate = objTemplate.Path
Exit For
End If
Next

End Sub


…但是我在使用VBA来读取SharePoint文档库内容而不真正打开内容时遇到了麻烦,因为使用这么多的模板花费的时间太长,而且对用户造成很大的破坏。

有任何想法吗?你能指出我正确的方向吗?

编辑:这是我的解决方案:

Sub Macro()

Dim FSO As Object
Set FSO = CreateObject("Scripting.FileSystemObject")

Dim objFile As Object
Dim objDSO As Object

For Each objFile In FSO.GetFolder("\\SharePoint\doc lib\").Files
Set objDSO = CreateObject("DSOFile.OleDocumentProperties")
objDSO.Open objFile.Path

If objDSO.CustomProperties.Item("Template_ID") = ActiveDocument.CustomDocumentProperties("Template_ID").Value Then
ActiveDocument.AttachedTemplate = objFile.Path
End
End If
Next

MsgBox ("No matching template found. Please attach the proper template manually."), vbCritical

End Sub


显然,这可以利用DSOFile.dll(http://technet.microsoft.com/zh-cn/library/ee692828.aspx),但是我不必添加引用吗?仍然对此感到困惑。

另外,这可能不适用于https://(SSL)。虽然为我工作,所以我想分享。

最佳答案

我将从VBA调用SharePoint web services开始。
到达那里后,您可以调用GetListItems,它将直接使用正确的TemplateID属性拉回文档。

关于sharepoint - 使用VBA读取SharePoint文档库中文件的元数据或文件属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7477269/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com