Document.ContentControls
コレクションは、名前による検索、インデックスによるアイテム検索をサポートしていません。タイトル(またはタグ)でContentControlを取得
コードを読み取り可能にするために、ユーザ定義の識別子で特定のContentControl
を取得することはできますか。 (例:Content control titles - Ms Office Forumsは、1つずつ試すことができると主張しています)
Document.ContentControls
コレクションは、名前による検索、インデックスによるアイテム検索をサポートしていません。タイトル(またはタグ)でContentControlを取得
コードを読み取り可能にするために、ユーザ定義の識別子で特定のContentControl
を取得することはできますか。 (例:Content control titles - Ms Office Forumsは、1つずつ試すことができると主張しています)
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