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