InternetExplorerで表示されたページのテキストボックスに文字を入力する

スポンサーリンク

テキストボックスに文字を入力するVBAコード

前回InternetExplorerで表示されたページのソースを確認する方法についてお伝えしました。
今回は属性を調べたテキストボックスに実際に文字を入力するコードを紹介します。

テキストボックスを指定するVBAコードの書き方

テキストボックスに文字を記入するVBAコードの書き方をYahooのホームページにおいて検索ワードに文字を入力する方法を記載します。
YahooJapanのページにおいて、検索の文字を入力するテキストボックスのソースは以下のように記載されています。

<input name=”p” id=”srchtxt” type=”text” value=””>

このテキストボックスを操作するVBAコードは以下のようにidを取得する方法とnameを取得する方法が現実的です。
まず開いているページをobjIEに格納するコードを記載します。

Dim colSh As Object
Dim win As Object
Dim objIE As InternetExplorer
Set colSh = CreateObject(“Shell.Application”)
For Each win In colSh.Windows
If TypeName(win.document) = “HTMLDocument” Then
If InStr(win.document.URL, “http://www.yahoo.co.jp/”) > 0 Then
Set objIE = win
Exit For
End If
End If
Next

このコードに引き続き、以下の内容を記載することでテキストボックスに値を入れることができます。

①id属性で指定

id属性は一つのページで同じ値が割り振られることがないため、テキストボックスを指定する際に最も安定した処理方法になります。
テキストボックスにidが割り振られている場合は積極的に活用しましょう。

id属性から操作対象を取得するには以下のようにdocument.getElementById(“id属性”)を用います。

Dim txtInput As HTMLInputElement
’textInputという変数をHTMLのinputタグを入れるものとして定義する
Set txtInput = objIE.document.getElementById(“srchtxt”)
’idの値が”srchtxt”のinputタグをtxtInputに格納する
txtInput.Value = “VBA(マクロ)で楽しく仕事を効率化”
’txtInputの値を「VBA(マクロ)で楽しく仕事を効率化」とする

②name属性で指定

id属性だけでなくname属性で取得することもできます。
name属性は一つのページで同じ値の物があるので、インデックス番号を記載するのが特徴です。
(インデックス番号は「0」から始まるので、一つ目を指定したい場合は0と記入します。)
またgetElementsByNameと「s」が入って「複数系」になっています。

Dim txtInput As HTMLInputElement
’textInputという変数をHTMLのinputタグを入れるものとして定義する
Set txtInput = objIE.document.getElementsByName(“p”)(0)
’nameの値が”p”のinputタグのうち、一つ目をtxtInputに格納する
txtInput.Value = “VBA(マクロ)で楽しく仕事を効率化”
’txtInputの値を「VBA(マクロ)で楽しく仕事を効率化」とする

その他の属性でのinputタグの取得方法はまた別の機会に記載します。

おすすめ書籍 (広告)

コメント