プルダウンメニューを選択するサンプルです。標準モジュールに以下のコードを追加して、SelectPullDownプロシージャを実行します。
このサンプル用に、ダミーのお問い合わせフォームを用意しました。SelectPullDownプロシージャを実行すると、お問い合わせフォームに接続して、プルダウンメニューの「10歳未満」という値を選択します。
サンプルコード
【動作確認日】2014年2月11日
【動作確認環境】Windows XP SP3・Excel 2007・Internet Explorer 8
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
'プルダウンメニューを選択する Sub SelectPulldownMenu() Dim objIE As Object 'IE起動 Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True 'お問い合わせフォームに接続 objIE.navigate "https://form1.fc2.com/form/?id=627794" 'IEを待機 Call IEWait(objIE) '3秒停止 Call WaitFor(3) 'プルダウンメニューを選択 objIE.Document.getElementById("aetas").SelectedIndex = "1" 'valueがあれば以下のように直接設定するほうがいい 'objIE.Document.getElementById("aetas").value = "値" '3秒停止 Call WaitFor(3) 'IE終了 objIE.Quit Set objIE = Nothing End Sub 'IEを待機する関数 Function IEWait(ByRef objIE As Object) Do While objIE.Busy = True Or objIE.readyState <> 4 DoEvents Loop End Function '指定した秒だけ停止する関数 Function WaitFor(ByVal second As Integer) Dim futureTime As Date futureTime = DateAdd("s", second, Now) While Now < futureTime DoEvents Wend End Function |
解説
プルダウンメニューを選択している処理は、
1 |
objIE.Document.getElementById("aetas").SelectedIndex = "1" |
の部分です。お問い合わせフォームのSelectタグのname属性「aetas」をgetElementByIdメソッドに引数として渡しています。そして選択したいOptionタグのインデックス番号をSelectedIndexプロパティに設定しています。このインデックス番号は上から順番に0から数えます。
なお、このお問い合わせフォームのOptionタグには、<option>10歳未満<!–option>のようにvalue属性がありません。もしvalue属性があれば、
1 |
objIE.Document.getElementById("aetas").value = "(値)" |
のようにvalue属性を直接設定することもできます。ソースも見やすくメンテもしやすいので、value属性があれば、なるべくvalue属性を直接設定するほうがいいでしょう。