按标题(或标记)获取ContentControl

时间:2017-09-02 02:41:55

标签: vba ms-word word-vba

Document.ContentControls集合不支持按名称检索项目,仅支持索引。

我是否仍可以通过用户定义的标识符获取特定的ContentControl,以保持代码可读? (例如Content control titles - Ms Office Forums声称只能逐一尝试。)

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

内容控件可以通过其.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