コンテンツコントロールにテキストを挿入する - VBA プログラミング
PROGRAM
コンテンツコントロールにテキストを挿入する
Word 文書内に貼り付けたコンテンツコントロールに、VBA を使ってテキストを入力してみます。
Word 文書にコンテンツコントロールを挿入したい場合には、Word 2010 の場合は、【開発】リボンの【コントロール】にあるコントロールをクリックします。
そうすると、文書のカーソルのあるところに、選んだコントロールが配置されます。
配置したコントロールの "タイトル" や "タグ" を編集したい場合には、【開発】リボンの【コントロール】グループ内にある【プロパティ】をクリックします。
コンテンツコントロールの基本操作
Word 文書に配置したコンテンツコントロールを VBA から使用するには、Word の場合は ActiveDocument などのドキュメントにある "ContentControls" プロパティを使用します。
' 例えば、最初のコントロールを取得するには次のようにします。
Dim control As ContentControl
control = ActiveDocument.ContentControls.Item(1)
注意点としては、コンテンツコントロールの番号は 1 から始まる通し番号になるようだというところでしょうか。
また、コンテンツコントロールに "タイトル" や "タグ" を設定していても、Item メソッドでは、それらの名前を指定してコンテンツコントロールを取得することはできない感じです。
こうして取得した ContentControl の Range プロパティが持つ Text プロパティに文字列を代入することで、そのコンテンツコントロールにテキストを設定することができます。
' コントロールに今日の日付を設定します。
control.Range.Text = Now
他にも PlaceholderText プロパティを使えば、未入力時に入力を促すテキストを自由に設定することができます。
複数のコンテンツコントロールを順次処理する
たとえば Word 文書中に "TEXT" というタイトルをつけたテキストコントロールと、"DATE" というタイトルをつけた日付コントロールがあるとします。
これらのうち、テキストコントロールには "今の日時" というテキストを、日付コントロールには実際の今の日時を設定したい場合には、次のようにプログラムすることで実現できます。
Dim control As ContentControl
For Each control In ActiveDocument.ContentControls
Select Case control.Title
Case "TEXT"
control.Range.Text = "今の日時"
Case "DATE"
control.Range.Text = Now
End Select
Next
このように、テキストコントロールでも日付コントロールでも、どちらでも Range.Text に値を設定すればいい感じです。
上記の例では、現在アクティブなドキュメントの中にあるコントロール全てを調べて、そのタイトルによって代入する値を変えています。
日付コントロールであっても Text プロパティに DateTime の値を代入してあげれば、それに応じた日付を、コントロールに設定されている日付書式で表示してくれます。
後はこのマクロを実行すれば、Word 文書内に配置したコントロールにテキストが自動挿入されます。
[ もどる ]