コンテンツコントロールにテキストを挿入する - 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 文書内に配置したコントロールにテキストが自動挿入されます。


[ もどる ]