※本ソフトの公開・サポートは終了しました。
ホーム > スクリプト作成入門 > フォーム内の入力欄などを操作する方法

フォーム内の入力欄などを操作する方法

(目次)

1.概要

ここでは、スクリプトからフォーム内の入力欄にテキストを入力したり、チェックボックスをチェックしたりする方法を紹介します。

動作確認用のサンプルスクリプトも紹介しています。スクリプトパネルから実行してください。各項のスクリプトのサンプルは「10.動作確認用フォーム」にあるフォームに対して動作します。

2.form要素を取得する

フォームを操作するには、操作するフォームのform要素を取得する必要があります。

ScriptBrowserKのスクリプトの記録機能を使用すると、form要素を取得するスクリプトを簡単に作成できます。

  1. スクリプトパネルで「スクリプトの記録()」をクリックしてスクリプトの記録状態にします。
  2. 目的のフォーム内の要素(入力欄やチェックボックス)をクリックします。ここでは、「9.動作確認用フォーム」の「テキスト」欄をクリックしたとして解説します。
  3. すると、[記録されたスクリプト欄]に下のようなスクリプトが記録されます。
    ActiveDocument.Forms("form1").Elements("textfield", 0).Click
    name属性の値が同じフォームが複数ある場合は、下記の様に Forms に更に順番を表す引数が追加されて記録されます。
    ActiveDocument.Forms("form1", 1 ).Elements("textfield", 0).Click

    form要素にid属性やname属性が設定されていない場合は下のように、Formsの引数がインデックス番号で記録される場合もあります。
    ActiveDocument.Forms(0).Elements("textfield", 0).Click
  4. 記録された行で、「ActiveDocument.Forms("form1")」の部分がform要素を取得(form要素にアクセス)している部分です。
    実際にスクリプトを作成する場合は下のようにform要素を変数に代入して、その変数を介してフォームを操作するのが便利でしょう。
    Set form = ActiveDocument.Forms("form1")
  5. スクリプトパネルで「スクリプトの記録()」をクリックしてスクリプトの記録状態を解除します。

3.テキストボックス(input type=text, password)への入力

対象となるのは単一行の入力エリアです。input要素のtype属性がtext, passwordのものが該当します。

テキストを入力するにはvalue属性に設定したい文字列を代入するだけです。

下のスクリプトは「10.動作確認用フォーム」の「テキスト」欄に「Text テスト」 という文字列を、入力します。

ActiveDocument.Forms("form1").Elements("textfield", 0).value = "Text テスト"

※ type属性が file の場合はセキュリティ上の問題から value属性は読み取り専用になっています。

対策として、下記のようにフォーカスを移動してから SendKeys を使用すると値を設定することができます。

ActiveDocument.Forms("form1").Elements("FILE_A", 0).Focus
SendKeys("c:\test\test.html")

4.テキストエリア(textarea)への入力

対象となるのは複数行の入力欄です。textarea要素がこれに該当します。

テキストを入力するにはvalue属性に設定したい文字列を代入するだけです。

下のスクリプトは「10.動作確認用フォーム」の「TextArea テスト」 という文字列を、「テキストエリア」欄に入力します。

ActiveDocument.Forms("form1").Elements("textarea", 0).value = "TextArea テスト"

5.チェックボックス(input type=checkbox)の選択

対象となるのはinput要素(type=checkbox)です。チェックするにはChecked属性にTRUEを、チェックをはずすにはFALSEを代入します。

下のスクリプトは「10.動作確認用フォーム」の3つのチェックボックスを全てチェック状態にします。

ActiveDocument.Forms("form1").Elements("checkbox1", 0).Checked = TRUE
ActiveDocument.Forms("form1").Elements("checkbox1", 1).Checked = TRUE
ActiveDocument.Forms("form1").Elements("checkbox2", 0).Checked = TRUE

6.ラジオボタン(input type=radio)の選択

対象となるのはinput要素(type=radio)です。選択するにはchecked属性にTRUEを、選択を解除するにはFALSEを代入します。

ラジオボタンのどれか1つのchecked属性にTRUEを代入すると、他のname属性の値が同じラジオボタンのchecked属性はFALSEになります。

下のスクリプトは「10.動作確認用フォーム」で左から順にラジオボタンをチェックします。最後の行が実行されると(スクリプト実行後の状態は)「Radio 1-3」がチェック状態になり、他の2つのラジオボタンはチェックが外れた状態になります。

ActiveDocument.Forms("form1").Elements("radio1", 0).Checked = TRUE
ActiveDocument.Forms("form1").Elements("radio1", 1).Checked = TRUE
ActiveDocument.Forms("form1").Elements("radio1", 2).Checked = TRUE

7.セレクトボックス(select, ドロップダウン形式)の項目の選択

対象となるのはselect要素のsize属性が1か、size属性が省略されているものです。

選択状態を変更するには下の2つの方法があります。

  1. select要素のvalue属性にoption要素のvalue属性の値を代入する
  2. select要素のoptions集合のなかから選択したい項目のoption要素(Index番号を指定する)のselected属性にTRUEを代入する

下のスクリプトは「10.動作確認用フォーム」でSelect1_1を選択した後に、Select1_2を選択します。

ActiveDocument.Forms("form1").Elements("select1", 0).value="Select1_1"
ActiveDocument.Forms("form1").Elements("select1", 0).options(1).selected=TRUE

8.セレクトボックス(select, リスト形式。複数選択不可)の項目の選択

対象となるのはselect要素のsize属性が2以上で、multiple属性が指定されていないものです。

上の「7.」項のセレクトボックス(ドロップダウン形式)と同様に選択状態を変更するには下の2つの方法があります。

  1. select要素のvalue属性にoption要素のvalue属性の値を代入する
  2. select要素のoptions集合のなかから選択したい項目のoption要素(Index番号を指定する)のselected属性にTRUEを代入する

下のスクリプトは「10.動作確認用フォーム」でSelect2_1を選択した後に、Select2_2を選択します。

ActiveDocument.Forms("form1").Elements("select2", 0).value="Select2_1"
ActiveDocument.Forms("form1").Elements("select2", 0).options(1).selected=TRUE

9.セレクトボックス(select, リスト形式。複数選択可)の項目の選択

対象となるのはselect要素のsize属性が2以上で、multiple属性が指定されているものです。

選択状態を変更するには、select要素のoptions集合のなかから選択したい項目のoption要素(Index番号を指定する)のselected属性にTRUEまたはFALSEを代入します。

下のスクリプトは「10.動作確認用フォーム」でSelect3の1〜3全ての項目を選択します。

ActiveDocument.Forms("form1").Elements("select3", 0).options(0).selected=TRUE
ActiveDocument.Forms("form1").Elements("select3", 0).options(1).selected=TRUE
ActiveDocument.Forms("form1").Elements("select3", 0).options(2).selected=TRUE

10.動作確認用フォーム

テキスト

テキストエリア

CheckBox 1-1 CheckBox 1-2

CheckBox 2

Radio 1-1 Radio 1-2 Radio 1-3

Select1

Select2 複数選択不可

Select3 複数選択可

11.フォームを操作するスクリプトの例

上の動作確認用フォームを操作するスクリプトの例です。このページを表示した状態で実行してください。

「2.」で解説したように、form変数にform要素を代入しています。基本的に上で解説した内容を順次実行しているだけです。

set form = ActiveDocument.Forms("form1")
form.Elements("textfield", 0).value = "Text テスト"
form.Elements("textarea", 0).value = "TextArea テスト"
form.Elements("checkbox1", 1).Checked = TRUE
form.Elements("radio1", 1).Checked = TRUE
form.Elements("select1", 0).value="Select1_1"
form.Elements("select2", 0).options(1).selected=TRUE
form.Elements("select3", 0).options(1).selected=TRUE
form.Elements("select3", 0).options(2).selected=TRUE

以上です。

2007/05/21:初版
2008/02/12:type属性が file の場合を修正
2009/07/08:name属性の値が同じフォームが複数ある場合について加筆

Copyright (c) 2011 Akiyoshi Kozuka (http://www.scriptbrowserk.com/)