VisualBasic2005を勉強している者です。WebBrowser1でウェブページを表示している場合、以下の(1),(2)で示される要素の値(?)を、Invokememberを用いずに(値を直接指定して)、それぞれの「*」以後の状態にするには、具体的にどのようなコードを書けばよいでしょうか?


(1)コンボボックス
<input type="text" name="X" value="" >
<select name="market_value1">
<option value='Y' selected >A</option>
<option value='Z' >B</option>
</select>
*Bを選択した状態にする。

(2)チェックボックス
<input name="P" type="checkbox" value="1" checked>
*チェックされていない状態にする。

どうぞよろしくお願いいたします。

回答の条件
  • 1人2回まで
  • 登録:2006/11/11 01:07:50
  • 終了:2006/11/16 17:56:40

ベストアンサー

id:KirakiraHikaru No.1

KirakiraHikaru回答回数354ベストアンサー獲得回数682006/11/12 08:32:29

ポイント100pt

Microsoft HTML Object Libraryを利用すると各要素タグを明確に扱えます。

上記を利用するには、下記の手順で参照を追加する必要があります。

1.メニュー「プロジェクト」->「参照の追加」

2.表示された「参照の追加」画面の「COM」タブを選択

3.「Microsoft HTML Object Library(mshtml.dll)」を選択して「OK」ボタンをクリック


・コンボボックスの項目を選択

            Dim htmlElements As HtmlElementCollection
            htmlElements = ie.Document.GetElementsByTagName("SELECT").GetElementsByName("market_value1")
            Dim msHtmlSelEle As mshtml.HTMLSelectElement
            msHtmlSelEle = htmlElements(0).DomElement
            '指定Indexのオプションを選択する方法
            msHtmlSelEle.selectedIndex = 1
            '指定値のオプションを選択する方法
            Dim opt As mshtml.HTMLOptionElement = Nothing
            For Each opt In msHtmlSelEle.options
                If opt.text = "B" Then
                    opt.selected = True
                    Exit For
                End If
            Next

最初にSELECTタグでname="market_value1"のものを取得。

取得した要素をHtmlElement型からHTMLSelectElement型に変換。

(market_value1がひとつしかないと仮定してhtmlElements(0)としています。複数個存在し2個目以降のものを対象とする場合は0の部分を変更してください)

SELECTタグの項目を、項目番号を指定して選択する場合はselectedIndexを設定。

SELECTタグ内の項目の値を判定して選択する場合は、optionsコレクションをループして該当の項目のselectedをTrueに設定。

(値で判定する場合は、opt.text = "B"をopt.value = "Z"としてください)


・チェックボックスのチェック状態を設定

            Dim chk As mshtml.HTMLInputElement = Nothing
            htmlElements = ie.Document.GetElementsByTagName("INPUT").GetElementsByName("Q")
            For Each htmlEle As HtmlElement In htmlElements
                If UCase(htmlEle.GetAttribute("type")) = "CHECKBOX" Then
                    chk = htmlEle.DomElement
                    chk.checked = True
                End If
            Next

INPUTタグでname="Q"のものを取得。

その中から、type="CHECKBOX"のものを取得。

取得した要素をHTMLInputElement型に変換。

checkedプロパティをTrueに設定。


上記はエラー処理等は含まれていません。

try文で囲んだり関数化して該当プログラムにあった処理を追加してください。

id:crashtruck

大変ありがとうございます。Microsoft HTML Object Libraryについての理解がまだ不十分ですが、よく勉強して使わせて頂きます。いつもありがとうございます。

2006/11/16 17:56:18

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません