目次ページへ戻る

[Word] チェックボックスを使いたい(WordからExcelを制御)


[例]
電話を受け、Word画面を見ながら、チェック項目に「]を入力していく。
その他、ネットワークで接続された複数のパソコンで共有フォルダ内ファイルにして、[校閲]の際、「]を入力していく。
などの使い方があります。


Word2007の場合


チェックボックスを配置したい場所で
[開発]リボン
→[デザインモード]
→[ActiveXコントロール]/[チェックボックス]
を選択します。



右クリックして表示される
[チェックボックスオブジェクト]
→[編集]を選択します。



カーソルの位置を確認してください。



ここでは、
チェックボックスと項目文を別に作成します。
[BackSpace]キーで文字列を削除します。



チェックボックスと一体化する場合、文字列を
修正します。



文字列を修正すると
プロパティのCaption欄に入力することと
同じです。



チェックボックスの右位置で「確認項目1」を
入力すると、上下段違いになります。



チェックボックスを選択し
右クリックして表示される
[コントロールの書式設定]
を選択します。



[レイアウト]タブ/[四角]を選択します。



チェックボックスを移動できるようになります。
さらに[詳細設定]をクリックします。



「[]アンカーを段落に固定する」を選択し
[OK]→[OK]をクリックします。



文字列を選択し、
右クリックして表示される
[コピー]を選択します。



該当位置で、
右クリックして表示される
[貼り付け]を選択します。



項目文章を修正します。



[デザインモード]をオフにして完了です。

[レ]を付けてみましょう。






Word2003以前の場合(上記とは少し異なった方法で行います。)


先に項目文章を入力します。



項目文章の前にカーソルを当て、
その位置にチェックボックスを配置します。



[表示]メニュー
→[ツールバー]
→[コントロールツールボックス]
を選択します。



[コントロールツールボックス]が表示され
[チェックボックス]を選択します。



右クリックして表示される
[チェックボックスオブジェクト]
→[編集]を選択します。



ここでは、
チェックボックスと項目文を別に作成します。
[BackSpace]キーで文字列を削除します。



チェックボックスを選択し
右クリックして表示される
[コントロールの書式設定]
を選択します。



[レイアウト]タブ/[四角]を選択します。

さらに[詳細設定]をクリックします。



「[]アンカーを段落に固定する」を選択し
[OK]→[OK]をクリックします。



チェックボックスを移動できるようになります。



文字列を選択し、
右クリックして表示される
[コピー]を選択します。



該当位置で、
右クリックして表示される
[貼り付け]を選択します。





項目文章を修正します。



[デザインモード]をオフにして完了です。

[レ]を付けてみましょう。





マクロでチェックボックスをクリアする方法

多数のチェックボックスを一つづつクリア(オフ)にするのは、手数がかかります。
マクロを作って一度にクリアしてみます。

ここでは「名称」というテキストボックス上でダブルクリックすると
[テキストボックス]およびすべての[チェックボックス]をクリアする例です。


[開発]リボン
→[デザインモード]
「名称」テキストボックスを選択し、
 →[プロパティ]
(オブジェクト名)欄に
TB1」と名前を付けます。

また、背景色(BackColor)を
ピンク色にしました。



 1番目のチェックボックスを選択し、
(オブジェクト名)欄に
CB1」と名前を付けます。

 他のチェックボックスにも
 同様に「CB2」~「CB5
 と名前を付けます。

 ※名前を付けると項目が特定できますので
  チェックボックスのオン/オフをExcelファイルに出力したり
  ExcelからWordのチェックボックスのオン/オフを取得することが容易になります。


「名称」テキストボックスを選択し、
 右クリックして表示される中から
 [コードの表示]を選択すると



[コード記述]画面が現れますので、 黄色枠内の部分を入力します。  下方の[Wordマクロ例]を貼り付けてください。



[デザインモード]をオフにして
「名称」テキストボックスの上で
ダブルクリックすると
クリアされます。



[Wordマクロ例] "ThisDocument"内に記述

"enqdata.xls"

ABCDEFGH
11書込日時名称項目1項目2項目3項目4項目5

'"enqdata.doc"から(マクロ) "enqdata.xls"(マクロ含まず)へデータを書込む '[[アンケート集計例]] '[出力するエクセルデータ]西暦年月日 + 時分秒 + 名称 + チェックボックス 5項目 '"enqdata.xls"データをクリアした場合, A1セルに"1"を入力しておくこと!!! Dim エクセルOBJ As Object Dim シートOBJ As Object 'Excel接続に使用する名称 Dim 行 As Long, 時刻 As Long '長整数型領域 Dim ファイル名 As String, 年月日 As String, 時分秒 As String '文字列型領域 Dim CBD1 As Integer, CBD2 As Integer, CBD3 As Integer '整数型領域 Dim CBD4 As Integer, CBD5 As Integer ' 〃 Const ブック名 As String = "enqdata.xls" '(分かり易くここで定義) ''''''''''''''''''''''''''''''''''''''' Private Sub TB1_DblClick(ByVal Cancel As MSForms.ReturnBoolean) 'ダブルクリックした時の処理 '(開始処理) Set エクセルOBJ = CreateObject("excel.application") 'Excelとの接続 ファイル名 = ActiveDocument.Path & "\" & ブック名 'Wordと同一フォルダ内Excelファイル エクセルOBJ.Workbooks.Open ファイル名 'Excelを開く Set シートOBJ = エクセルOBJ.worksheets(1) 'シート名指定も可 行 = シートOBJ.Range("A1") + 1 '次の書込行位置 If 行 < 1 Then 行 = 2 '2行目からデータ書込み '(メイン処理) '現在の日時(年月日時分秒)を Cstr()関数で文字列化 年月日 = CStr(Year(Now) * 10000 + Month(Now) * 100 + Day(Now)) 時刻 = Hour(Now) * 10000 + Minute(Now) * 100 + Second(Now) If 時刻 < 100000 Then 時分秒 = "0" & CStr(時刻) '時間2桁化 Else 時分秒 = CStr(時刻) End If シートOBJ.Cells(行, 1) = 年月日 '書込み シートOBJ.Cells(行, 2) = 時分秒 '書込み シートOBJ.Cells(行, 3) = TB1 'テキストボックス内容を書込み ' CBD1 = 0: CBD2 = 0: CBD3 = 0: CBD4 = 0: CBD5 = 0 '予め 0 をセット If CB1 = True Then CBD1 = 1 'True は 1 をセット If CB2 = True Then CBD2 = 1 ' 〃 If CB3 = True Then CBD3 = 1 ' 〃 If CB4 = True Then CBD4 = 1 ' 〃 If CB5 = True Then CBD5 = 1 ' 〃 シートOBJ.Cells(行, 4) = CBD1 'Excelシートに 0 または 1 を書込み シートOBJ.Cells(行, 5) = CBD2 ' 〃 シートOBJ.Cells(行, 6) = CBD3 ' 〃 シートOBJ.Cells(行, 7) = CBD4 ' 〃 シートOBJ.Cells(行, 8) = CBD5 ' 〃 '(終了処理) TB1 = "" 'Word テキストボックスをクリア & チェックボックスをオフ CB1 = False: CB2 = False: CB3 = False: CB4 = False: CB5 = False On Error Resume Next 'エラーが発生した場合,次行を処理 シートOBJ.Range("A1") = 行 '記録した行を記憶 Application.DisplayAlerts = wdAlertsNone '警告表示させない エクセルOBJ.ActiveWorkbook.Save '更新したExcelを上書き保存 エクセルOBJ.Quit 'Excel終了 Set シートOBJ = Nothing '変数設定クリア Set エクセルOBJ = Nothing ' 〃 Application.DisplayAlerts = wdAlertsAll '(通常の)警告表示へ戻す End Sub