Wordのチェックボックスを操作

Wordで作成したテンプレート文章で、チェックボックスにチェックを付けたり、外したりする処理になります。チェックボックスには名前を付ける作業があるので、Word側の処理も必要になります。
Word側の変更ができない場合は、数字を使って指定することも可能です。
テンプレートを使用しない場合は、Wordファイルを開くを参考にしてください。

【サンプルプログラム】

' ------------------------------------------------------------
' 説明:Word のテンプレートファイルを開く
' 引数:1:テンプレートファイル名
' 戻値:-
' 備考:-
' ------------------------------------------------------------
Sub WordTemplateOpen(filename As String)
    Dim WordApp As Word.Application
    Dim WordDoc As Word.Document

    Set WordApp = New Word.Application

    ' Wordを表示する
    WordApp.Visible = True

    ' 指定したWordテンプレートファイルを起動します。
    Set WordDoc = WordApp.Documents.Add(Template:=filename)

    ' 処理
    WordCheckBox WordDoc, "check01"

    ' 終了
    WordDoc.Close
    WordApp.Quit
End Sub

【関数化】

' ------------------------------------------------------------
' 説明:Word のチェックボックスを付ける
' 引数:1:Wordのオブジェクト
'       2:タグ名
'       3:チェックを付ける(True)か、チェックを外す(False)
' 戻値:-
' 備考:-
' ------------------------------------------------------------
Sub WordCheckBox(WordDoc As Word.Document, tag As String, Optional check As Boolean = True)
    Dim ctlobj As Variant
    For Each ctlobj In WordDoc.ContentControls
        If ctlobj.tag = tag Then
            ctlobj.Checked = check
        End If
    Next ctlobj
End Sub

Word側の変更ができない場合は、数字を使って指定することもできます。
その場合は、WordCheckBox() を呼ばずに、以下のコードを使用することでチェックを操作できます。
数字の順番は上から付いていくので、どの数字でチェックが付くのかを確認しながら行う必要があります。少し手間はかかりますが、Word側の変更は発生しません。

    ' 処理
    WordCheckBox WordDoc, "check01"
    WordDoc.ContentControls(1).Checked = True

【補足】

Word.Application を使用しています。
初期設定では、エラーが発生するので、参照設定「Microsoft Word 16.0 Object Library」の設定
が必要です。


【Word側の処理】

メニューの「開発」からコントロールのチェックボックスを選択します。
表示されていない場合は、「リボンのユーザー設定」から追加してください。

チェックボックスを選択した状態で、「プロパティ」を選択します。

プロパティ画面が表示されるので、「タグ」に一意の名前を付けます。
サンプルプログラムでは「check01」になります。

コメント