• ベストアンサー

AxWebBrowserで開いたWebページを操作したいのですがコンボ

AxWebBrowserで開いたWebページを操作したいのですがコンボボックスの操作が上手くいきません。 Dim doc As mshtml.HTMLDocument doc = AxWebBrowser1.Document 'テキストボックス doc.all.item("text").innertext = "あああ" 'ラジオボタン doc.all.item("radio", 0).Checked = True テキストへの文字列の挿入とラジオボタンの制御はこれでできました。 環境はVB.NET 2005です。 どうか、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

コンボボックスのHTMLソースが ---------------------------- 例1:idを持つ場合 ---------------------------- <select id="Select1"> ← 「Select1」というIDを持っている <option selected="selected" value="1">あ</option> <option value="2">い</option> <option value="3">う</option> </select> ~VB~ Dim doc As mshtml.HTMLDocument doc = AxWebBrowser1.Document '複数の同じIDを持つコンボがあった場合、先頭のコンボを利用 Dim cmb As mshtml.HTMLSelectElement = doc.all.item("select1", 0) ---------------------------- 例2:idを持たない場合 ---------------------------- <select id="Select1"> ← IDを持っていない <option selected="selected" value="1">あ</option> <option value="2">い</option> <option value="3">う</option> </select> ~VB~ Dim doc As mshtml.HTMLDocument doc = AxWebBrowser1.Document 'コンボ群を取得 Dim elmcol As mshtml.IHTMLElementCollection = doc.getElementsByTagName("select") '先頭のコンボを利用 Dim cmb As mshtml.HTMLSelectElement = elmcol.item(0) ---------------------------- 例1か例2でコンボを捕まえたら ---------------------------- 後は好きな方法で値を設定 cmb.value = 1 '値での設定 cmb.selectedIndex = 2 '0からのIndex値

goo608
質問者

お礼

いけましたー^^ 本当に困っていたので助かりました。 ありがとうございます。

その他の回答 (1)

回答No.2

失礼しました ---------------------------- 例2:idを持たない場合 ---------------------------- <select id="Select1"> ← IDを持っていない <option selected="selected" value="1">あ</option> <option value="2">い</option> <option value="3">う</option> </select> IDありますね。。。 ---------------------------- 例2:idを持たない場合(訂正版) ---------------------------- <select> ← IDを持っていない <option selected="selected" value="1">あ</option> <option value="2">い</option> <option value="3">う</option> </select>

関連するQ&A

  • ラジオボタンやコンボボックスの使用不可

    window_OnLoadイベントでラジオボタンとコンボボックスを使用不可にしておくコーディングを書きたいのですが(目では見えるように)、どのプロパティを記述してもうまくとおりません。 ラジオボタン・コンボボックスそれぞれにIDとNameつけて、以下のように記述しています。 ''ラジオボタン初期非表示 'document.all.item("rdoKey1").checked = false 'document.all.item("rdoKey2").checked = false どんなプロパティを使用すれば、使用不可(選択不可)にすることができるでしょうか?

  • VB.NETからWEBブラウザの操作について

    VS2008 VB.NETにて開発を行っています。 プログラムからIEにて開いたWEBサイトに IDとパスワードを自動入力し自動ログインする処理を作成しています。 IDとパスワードの入力については、サンプルサイトなどからお借りして 以下のように作成し実現できました。 Dim ieDoc As mshtml.HTMLDocument = CType(IE.Document, mshtml.HTMLDocument) Dim elCol As mshtml.IHTMLElementCollection = CType(ieDoc.all, mshtml.IHTMLElementCollection) Dim usTxt As mshtml.HTMLInputTextElement = DirectCast(elCol.item("username"), mshtml.HTMLInputTextElement) Dim psTxt As mshtml.HTMLInputTextElement = DirectCast(elCol.item("password"), mshtml.HTMLInputTextElement) Dim elBtn As mshtml.HTMLButtonElement = CType(elCol.item("???"), mshtml.HTMLButtonElement) usTxt.value = "xxxxx" psTxt.value = "xxxxx" elBtn.click() ただログインボタンクリックの部分にnameのTAGがなく以下のような通常のクリック動作を行う ソースになっています。 ・ログインする対象のWEBサイトのソース <td colspan="2" class="white centerPosT"> <a href="#" onclick="javascript:login(); return false;"> <img src="/images/btn_login.gif" alt="ログイン" onmouseout="javascript:showUp(this)" onmousedown="javascript:showDown(this)" /> </a> </td> このような場合にログインをクリックさせるにはどのような方法で行えばよろしいのでしょうか?

  • C#でラジオボタンとコンボボックスの値を連動させる

    初めて質問します。よろしくお願いします。 C#の質問です。 4つのラジオボタンがあり、それを選択すると、そのラジオボタンによってコンボボックスのItem(コレクション)が変化するような仕様を作成したいと考えております。 具体的に言いますと、 ラジオボタン1を選択したらコンボボックスのItem(コレクション)が1,2,3となる ラジオボタン2を選択したらコンボボックスのItem(コレクション)が10,20,30となる ラジオボタン3を選択したらコンボボックスのItem(コレクション)が100,200,300となる ラジオボタン4を選択したらコンボボックスのItem(コレクション)が1000,2000,3000となる のような感じです。 やり方が分からないので、ソースを教えてくれると凄く助かります。 よろしくお願いします。

  • VB2010でGoogleを操作したい

    VB初心者です。さきほどの質問で、自分ができたところまでのソースを載せ忘れたので、改めて質問させていただきます。 今Visual Basic 2010 .Netで、 フォームに貼り付けたテキストボックスに入力した文字列を、 ボタンをクリックするとGoogleを立ち上げ、 そのGoogleのテキストボックスに先ほどフォームで入力した文字列を自動で入力、 入力後自動で検索のボタンをクリック するというのを作成中なのですが、Googleを立ち上げたところまではできたのですが、テキストボックスへ自動で入力するところでエラーが出て止まっています。 フォームのテキストボックスの文字列の取得は成功してまして、参照の追加COMで必要な参照はしています。 フォームでWebブラウザのツールを使わずに上記をするのは無理なのでしょうか? ご存知の方はご教示のほどよろしくお願いいたします。 下にソースを載せます。 Pubic Class Form1 Private WithEvents IE As SHDocVw.InternetExplorer Private myUrl As String Private Googletxt As String Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click If Not (IE Is Nothing) Then IE.Quit() IE = Nothing End If myUrl = "http://www.google.co.jp/" IE = New SHDocVw.InternetExplorer Googletxt = Textbox1.Text IE.Visible = True IE.Navigate2(myUrl.ToString) End Sub Private Sub IE_DocumentComplete(ByVal pDisp As Object, ByRef URL As Object) Handles IE.DocumentComplete Invoke(New SHDocVw.DWebBrowserEvents2_DocumentCompleteEventHandler(AddressOf foo), pDisp, URL) End Sub Private Sub foo(ByVal pDisp As Object, ByRef URL As Object) Dim Doc0 As mshtml.HTMLDocument = CType(IE.Document, mshtml.HTMLDocument) Dim ElCo As mshtml.IHTMLElementCollection = CType(Doc0.all, mshtml.IHTMLElementCollection) Dim elem As mshtml.HTMLInputTextElement = DirectCast(ElCo.item("q"), mshtml.HTMLInputTextElement) elem.value = Googletxt '検索キーワードの入力用テキストボックスに書き込み Dim btn1 As mshtml.HTMLInputTextElement = DirectCast(ElCo.item("btnG"), mshtml.HTMLInputTextElement) btn1.click() '検索ボタンをクリック End Sub End Class エラー elem.value = Googletxt 上記のところで、"オブジェクト参照が オブジェクトインスタンスに設定されていません。" と出ています。

  • ウェブサイトのコンボボックスのアイテムを取得したいVB.NET

    ブラウザに表示されているコンボボックスのアイテムの文字列を取得したいです。 出来ればそのコンボボックスに登録されているものを 全部取得したいのですが、1つだけでも構いません。 a = AxWebBrowser1.Document.forms(0).Elements("ComboBox1").text 上記のような方法で取得しようとしているのですが、 .text の場合はHTMLSelectElementClassのメンバではないというエラーが出てしまいます。 Valueですと選択しているインデックス番号が取得できるのですが、 そうではなくて実際に表示される文字列を取得したいです。 あとこれを取得することが出来た場合、 For Nextで0~10などで AxWebBrowser1.Document.forms(0).Elements("ComboBox1").Value = i で選択を変更しては、取得するということを繰り返して 登録されているアイテム全てを取得しようと思っているのですが、 一度に全部取得する方法がありましたら教えて頂きたいです。 よろしくお願いいたします。

  • コンボボックスの高さを変更したい。

    こんにちは。 MFCでプログラムをしています。 コンボボックスを配置したのですが、高さを他のテキストボックス等を 合わせたいと思うのですがうまくいきません。 CComboBox::SetItemHeightでアイテムの高さを変更することで、コンボ ボックスの高さも変更されることは分かりました。 逆にコンボボックスのコントロールの高さが指定の高さになるように、 アイテムの高さを求めることはできないのでしょうか? もし解決方法がありましたら教えていただけないでしょうか。

  • vb2005のWebbrowserについて

    vb2005のWebbrowserコントロールで表示さているhtmlの中に 「web_text」というテキストフィールドがある場合、 WebBrowser1.Document.All.GetElementsByName("web_text")(0).InnerText = "あああ" というコードを実行すると、テキストフィールドに「あああ」という文字が入りますが、 似たようなカンジで、チェックボックスのチェックを選択したり、 コンボボックスから値を選択したり、ラジオボタンを選択したりする 方法がわかりません。 どなたかご教授願いたく思っております。

  • テキストボックスに入力すると、コンボボックスが出現する

    いつもお世話になっています。 ExcelVBAについてなのですが、あるシート上にテキストボックスを作っておきます。 で、それに何か語句が入力されたら、テキストボックスの右にコンボボックスが出現するというのを作りたいのです。 そのコンボボックスで何かが選ばれたら、更にその下にテキストボックスが現れるというのが理想です。 並び順は テキストボックス1   コンボボックス1 テキストボックス2   コンボボックス2 テキストボックス3   実行ボタン 最初にあるのは「テキストボックス1」と「実行ボタン」のみです。その他の4つは隠れています。 テキストボックス1→コンボボックス1→テキストボックス2→コンボボックス2→テキストボックス3の順で出現するのを作りたいのです。 そういうことって可能でしょうか? あらかじめ作っておき、各々のプライベートでvisibleでfalseにして作ったのですが、テキストで「入力したら」とか、コンボで「選んだら」というのができませんでした。 よろしければお知恵をお貸しください。よろしくお願いします。

  • コンボボックスの自動更新について

    コンボボックスの自動更新について エクセルのVBAで、ユーザーフォームを使用しています。 ユーザーフォームの中には「入力」ボタンとコンボボックスと テキストボックスがあります。 コンボボックスは、「ABCDEF」と6つのリストがあります。 ユーザーフォーム起動時には、コンボボックスは空欄で コンボボックスから、入力したい商品を選んで、入力ボタンを押して コンボボックスとテキストボックスの内容を入力・コンボボックスを 空欄に戻しています。 これを、「A」を選んで入力ボタンをおしたら「B」が選ばれる。 「B」を選んで入力ボタンをおしたら「C」が選ばれるといったように コンボボックスに表示されるリストを自動で更新することは できないでしょうか? Select case などを利用して組み立てようとしたのですが、 数時間以上調べても出来ません。 教えていただけると助かります。

  • コンボボックスのボタンの大きさについて

    Microsoft Accessのフォームにツールボックスからコンボボックスを配置しました。 表示される文字を大きめにしようとコンボボックスのサイズを変更したら右の ボタン[▼]が小さくなってしまいました。 ボタンのサイズをコンボボックスの高さとあわせるには何らかの操作が必要なのでしょうか? ご存知の方教えてください。

専門家に質問してみよう