テキストボックスに表示された値を取得する
操作対象画面(Google)を起動
'サンプル3.2_テキストボックスに表示された値を取得する
Public Sub getDataFromInput()
'※VBE上でツール>参照設定で、Microsoft Internet ControlsまたはMicrosoft Browser Helpersを追加
Dim ie As InternetExplorer
'※VBE上でツール>参照設定で、Microsoft HTML Objectを追加
Dim htdoc As HTMLDocument
Dim InputText As HTMLInputElement
'Google検索画面を取得
Set ie = getIE("Google")
'ドキュメントを取り出す(参照設定:Microsoft HTML Object Library)
Set htdoc = ie.document
'FormタグとInputタグのName属性を指定してインプット要素を取得
Set InputText = htdoc.forms("f").elements("q")
'入力されている値を表示
MsgBox InputText.Value
End Sub
'ドキュメントタイトル/URLを指定してIEを取得
Public Function getIE(arg_title As String, Optional arg_url As String) As Object
Dim ie As Object 'IEを格納する変数(オブジェクト型)
Dim sh As Object '起動中のShellWindow一式を格納する変数
Dim win As Object 'ShellWindowを格納する変数
Dim document_title As String 'ドキュメントタイトルの一時格納変数
Set sh = CreateObject("Shell.Application") 'ShellWindowをwinsに格納
'ShellWindowから1つづつ取得して処理
For Each win In sh.windows
'ドキュメントタイトル取得失敗を無視(処理継続)
On Error Resume Next
document_title = ""
document_title = win.document.Title
On Error GoTo 0
'タイトルバーに引数が含まれるかチェック
If InStr(document_title, arg_title) > 0 Then
Set ie = win '変数ieに取得したwinを格納
Exit For 'ループを抜ける
End If
Next
Set getIE = ie '値の返却
End Function
「forms」はHTML中の<form>タグ一式が含まれている。また、「elements」はHTML中の<input>タグなど画面部品要素一式が含まれている。
Googleの場合、フォーム名は「f」、検索テキストボックスの要素名は「q」となっているから、一式の中から「()」でくくって指定する。これで検索テキストボックスに対して操作する準備が整った。
Set InputText = htdoc.forms("f").elements("q")
次に検索ボックスから値を取り出すためには、「Value」プロパティを参照すればいい。
MsgBox InputText.Value
テキストボックスに値をセットするの右辺と左辺を入れ替えた処理ね。
豆知識だけど、elementsの引数にString型の変数を指定することはできない。「"f"」のように直接指定するか、Variant型の変数を使う必要があるから覚えておくといいわ。