Document.ContentControls
集合不支持按名称检索项目,仅按索引检索。按标题(或标记)获取ContentControl
我仍然可以通过用户定义的标识符获得特定的ContentControl
以保持代码可读? (例如Content control titles - Ms Office Forums声称只能逐一尝试)
Document.ContentControls
集合不支持按名称检索项目,仅按索引检索。按标题(或标记)获取ContentControl
我仍然可以通过用户定义的标识符获得特定的ContentControl
以保持代码可读? (例如Content control titles - Ms Office Forums声称只能逐一尝试)
有Document.SelectContentControlsByTitle()
和Document.SelectContentControlsByTag()
这方法。
由于控件的任何属性都不能保证是唯一的,所以都返回ContentControls
结果集合。这样的功能可以被用来验证结果存在且唯一:
Public Function CCSingle(source As ContentControls) As ContentControl
Select Case Sgn(source.Count - 1)
Case -1
'9 = subscript out of range
'http://onlinelibrary.wiley.com/doi/10.1002/9781118257616.app3/pdf
Call Err.Raise(9, , "Identifier not found")
Case 1
Call Err.Raise(9, , "Identifier not unique")
Case Else
Set CCSingle = source.Item(1)
End Select
End Function
内容控件可以通过其.TAG财产和.title伪属性来确定。这是简单的事情。它从所有内容控件集合中返回与标题和标签相匹配的第一个内容控件。
Function FindCCbyTitleAndTag (Title as string, Tag as string) as ContentControl
Dim CC as ContentControl
For each CC in ActiveDocument.ContentControls
If CC.Title = Title and CC.Tag = Tag then
FindCCbyTitleAndTag = CC
End If
Next CC
End Function
您拥有的信息是正确的,并且在您发布的链接中提供了解决方案。循环浏览像这样的集合真的非常快。下面提供的答案适用于Office 365,可能不适用于您的MS Office版本。 – Variatus
@ Variatus我目前在Office 2007中的答案中使用该解决方案。 –
然后,你有最好的可用。你为什么会抱怨?它应该是你的代码中的一个单独的函数,你只需要安装一次,忘记它是如何工作的。 – Variatus