2017-09-02 58 views
1

Document.ContentControls集合不支持按名稱檢索項目,僅按索引檢索。按標題(或標記)獲取ContentControl

我仍然可以通過用戶定義的標識符獲得特定的ContentControl以保持代碼可讀? (例如Content control titles - Ms Office Forums聲稱只能逐一嘗試)

+0

您擁有的信息是正確的,並且在您發佈的鏈接中提供瞭解決方案。循環瀏覽像這樣的集合真的非常快。下面提供的答案適用於Office 365,可能不適用於您的MS Office版本。 – Variatus

+1

@ Variatus我目前在Office 2007中的答案中使用該解決方案。 –

+0

然後,你有最好的可用。你爲什麼會抱怨?它應該是你的代碼中的一個單獨的函數,你只需要安裝一次,忘記它是如何工作的。 – Variatus

回答

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 
0

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