CoCoのYDブログ

心に思い浮かんだことを少し掘り下げ発信します

IEのテキストボックスを編集する

こんにちは

9月中旬に入り涼しくなってきましたね。

昨夜は寒いぐらいですw

 

さて、今回はIEのテキストボックスの内容です。

テキストボックスといえば、GoogleYahoo!の検索を行う際に入力するところですね。

ここを自在に入力できれば、大量のデータを検索でき、検索結果を取得できると思います。

今回はそのテキストボックスの入力と値の取得についてやってみましょう。

 

サンプルプログラム

Sub useTextbox()
    Dim ie As InternetExplorer
    Dim textInput As HTMLInputElement
    Dim textOutput As HTMLInputElement

    Set ie = CreateObject("InternetExplorer.Application")
    ie.Visible = True
    ie.navigate "http://book.impress.co.jp/appended/3384/4-2.html"
    Do While ie.Busy Or ie.readyState < READYSTATE_COMPLETE
        DoEvents
    Loop

    Set textInput = ie.document.getElementById("Text1")
    MsgBox textInput.Value

    Set textOutput = ie.document.getElementById("Text2")
    textOutput.Value = "VBAからの書き込み"
End Sub

 1行目:プロシージャの開始

2行目:変数の宣言

3,4行目:HTMLInputElement型として変数を宣言

5行目:なし

6行目:変数ieにInternetExplorer.Applicationをセット

7行目:IEを表示

8行目:ページに接続

9~11行目:ページを開くまで待機

12行目:なし

13行目:DOMを使ってId"Test1"のドキュメントを取得

14行目:取得したドキュメントからValueの項目をMsgBoxで表示

15行目:なし

16行目:"Text2"のドキュメントを取得

17行目:"Test2"のValueの項目を変更

18行目:終了

解説

 HTML文章はpタグやtableタグなどあらゆる構成文章から成り立っており、この中から捜査対象のテキストボックスを特定するためには、Inputタグがもつ属性に注目してみましょう。

 プログラム内のサイトにアクセスしてソースを表示すると次の箇所が存在します。

取得用:<input id="Text1" type="text" value="テスト">
出力用:<input id="Text2" type="text" value="">

 今回のプログラムはこの情報をプログラムで編集するといった内容です。

 

HTMLInputElementとは

 テキストボックスへの参照を格納するための変数とのことです。

<input ~>がこのオブジェクトに格納されます。

 

getElementByIdとは

 HTMLInputElementのオブジェクトに指定されたIDを使用しているドキュメントを格納するといったところでしょうか。

 

今回は格納した"Text1"の値の表示と"Text2"の値の書き換えを行っていることが分かります。