■テキストボックスは多くの場合、サーバ送信時のキー項目としてname属性が付与されている。
また、name属性を付与した場合はid属性を付与することがHTMLの使用そして推奨されている。
以下のコードはid属性をキーにして特定しているが、id属性が付与Sれていない場合、
「getElementsByName」メソッドを利用することでname属性をキーとして格納することもできる。
このさい、id属性は一意だが、name属性は一意でないため、「getElements」と複数表現になっている。
タグに対して付与されているname属性がたまたま一意であったとしても、1番目の要素であることを
示すためにインデックス番号「0」を指定して取得する必要がある。
■テキストボックスへの参照を格納する変数のデータ型は「HTMLInputElement」型とする。
このデータ型はタグの属性や操作を備えている。
■以下のVBAコードはページ下部のHTMLコードで記述されたWEBページに対しての操作。参照設定で「InternetExplorer」と「htmlObjectLibrary」チェックを入れている。
Sub useTextbox() Dim ie As InternetExplorer '値を取得するテキストボックス部品を格納する変数 Dim txtInput As HTMLInputElement Dim txtOutput As HTMLInputElement Dim htDocs As String 'IEを開いて対象画面へ移動 Set ie = CreateObject("InternetExplorer.Application") ie.Visible = True ie.navigate "https://book.impress.co.jp/appended/3384/4-2.html" Do While ie.Busy Or ie.readyState < 4 Debug.Print ie.Busy & ":" & ie.readyState DoEvents Loop 'テキストボックスを変数「txtInput」としてVBAから扱えるようにする Set txtInput = ie.document.getElementById("Text1") 'テキストボックスから値を取得し、メッセージボックスで表示する MsgBox txtInput.Value 'テキストボックスを変数「txtOutput」としてVBAから扱えるようにする Set txtOutput = ie.document.getElementById("Text2") 'テキストボックスの値を書き換える txtOutput.Value = "VBAからの書込み" End Sub
■上記のVBAコードは以下のHTMLコードで書かれたWEBページに対しての処理
<html> <head> <title>テキストボックス</title> </head> <body> 取得用:<input id="Text1" type="text" value="テスト"><br> 出力用:<input id="Text2" type="text" value=""> </body> </html>