人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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>
*チェックされていない状態にする。

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

●質問者: crashtruck
●カテゴリ:コンピュータ インターネット
✍キーワード:ウェブページ コンボ コード チェックボックス ボックス
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● KirakiraHikaru
●100ポイント ベストアンサー

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文で囲んだり関数化して該当プログラムにあった処理を追加してください。

◎質問者からの返答

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ