VB.NETでコンボボックスのアイテムを取得する方法

このQ&Aのポイント
  • VB.NETでウェブサイトに表示されているコンボボックスのアイテムの文字列を取得する方法を調べています。
  • 現在、AxWebBrowserコントロールを使用してコンボボックスのアイテムを取得しようとしていますが、.textプロパティがエラーを出してしまいます。
  • また、コンボボックスに登録されているすべてのアイテムを取得するために、For Nextループを使用する方法を模索しています。
回答を見る
  • ベストアンサー

ウェブサイトのコンボボックスのアイテムを取得したい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 で選択を変更しては、取得するということを繰り返して 登録されているアイテム全てを取得しようと思っているのですが、 一度に全部取得する方法がありましたら教えて頂きたいです。 よろしくお願いいたします。

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

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

dim sel as Object, opt as Object dim arTxt() as String sel = AxWebBrowser1.Document.forms(0).Elements("ComboBox1") Redim arTxt( sel.options.length -1 ) for n = 0 to sel.options.length -1   opt = sel.options.item(n)   arTxt(n) = opt.text & " " & opt.value next といった具合でしょう

goo081102
質問者

お礼

redfox63様ご回答ありがとうございます。 教えて頂いたとおりの方法で出来ました。 どうもありがとうございました。

関連するQ&A

  • コンボボックスにて複数列の値を使う方法

    VB.NET2008にて開発中です。 下記のように、コンボボックスのDataSourceにデータベースから取得した3列のDataTableを設定した場合、3列目の値を取得する方法を教えてください。  ComboBox.DataSource = DataTable  ComboBox.DisplayMember = "1列目"  ComboBox.ValueMember = "2列目"  1列目の取得・・・ComboBox.SelectedValue  2列目の取得・・・ComboBox.Text  3列目の取得・・・ComboBox.??? 表示の必要は無く、コンボボックスで選択したアイテムに関連する値を使いたいだけです。 よろしくお願いします。

  • コンボボックスのイベントについて

    OS  :WindowsXP Pro SP1 開発環境:VisualStudio .NET 2003 開発言語:C# 開発形態:Windowsアプリケーション いつもこの場にお世話になっております。 今回もよろしくお願い致します。 現在、Windowsアプリケーションを作成しており、フォームにはコンボボックスとテキストが貼り付けてあります。コンボボックスは配列になっています。 using System.Windows.Forms; public class Form1 : System.Windows.Forms.Form { 省略   private ComboBox[] cmbArray = new ComboBox[3]; } private void Form_Load(object sender, System.EventArgs e) // フォームロード {   cmbArray[0] = comboBox1;   cmbArray[1] = comboBox2;   cmbArray[2] = comboBox3; } // イベントハンドラの登録 for( int i=0 ; i<3 ; i++) {   cmbArray[i].Validated += new System.EventHandler(ComboBoxClick); } private void ComboBoxClick(object sender, System.EventArgs e) {   MessageBox.Show(((ComboBox)sender).Text); } プログラムは上記のようになっています。 ここで質問なのですが、コンボボックス内のアイテムが変更されたらすぐに発生するイベントは何なのでしょうか?ここではClickイベントを使用していますが、コンボボックス内のアイテムを変更し、そのコンボボックスからカーソルが別のコントロールに移動して初めて発生します。 いろいろとイベントを試したのですが、どれもカーソルが移動する際に発生しているようなのです。 コンボボックス内のアイテムが変更されたらすぐに発生するイベントはあるのでしょうか?どなたかご存知の方がおりましたら、どうかご教授願います。

  • コンボボックスからテキストボックスへのデータ反映

    コンボボックスにてデータ(文字列+数字)を選択して、同フォーム内にある テキストボックスへ数字だけを表示させるにはどのようにコードを入力すれば良いでしょうか? VS2010を利用しています。 コンボボックスには、●●会社 00000000000 ▲▲会社 1111111111 といったように登録されております。 Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged TextBox1.Text = ComboBox1.Text End Sub 上記のコードですと、文字列+数字がテキストボックスへ反映されてしまいます。 お忙しい中お手数をお掛けしますが、ご教授下さい。

  • Excel ユーザーフォームでコンボボックスを使用してデータ入力

    Excelのユーザーフォームでコンボボックスを使用して、シートのデータを表示しています。 コンボボックス:ComboBox1 テキストボックス1-3:TextBox1-3 コンボボックスのRowSource:シート名!A2:C100 コンボボックスの変更時の動作: Me!TextBox1.Value = ComboBox1.Value とここまではできたんですが、テキストボックス2にシートのB列の値を、テキストボックス3にシートのC列の値を入れたいのですが、 どのようにしたらいいのでしょうか?

  • Excel:コンボボックスの値をセルにセットする場合

    Excel2000を使っています。 コンボボックスで選択した内容をアクティブなセルに入力するために、以下のようなコードを作成しました。 (ユーザフォームにコンボボックスを1つ作成しています) ------------------------------------------ Private Sub UserForm_Initialize() ComboBox1.ColumnCount = 2 For I = 0 To 10 ComboBox1.AddItem Worksheets("元ネタ").Cells(I + 2,1).Value ComboBox1.List(I, 1) = Worksheets("元ネタ").Cells(I + 2,2).Value Next End Sub ------------------------------------------ Private Sub ComboBox1_Change() Worksheets("入力用").Activate ActiveCell.Value = ComboBox1.Text End Sub ------------------------------------------ このコンボボックスは、2列を表示させています。最後にセルに値を入力すると、今のコードでは1列目の値が入りますが、実際には2列目の値だけを入れたいんです。でもコンボボックスの選択時は、先頭列に1列目の値を表示させたいんです。 どうすれば、2列目の値をアクティブセルに入力できるでしょうか?

  • VBA コンボボックスで選んだ値を取得するには

    ユーザーフォーム上のコンボボックスから値を選択し、その値を変数として使いたいのですが、うまくいきません。 コンボボックスのコードで Private Sub ComboBox1_Change() moji1 = ComboBox1.Text Range("A1").Value = moji1 のようにすれば、コンボボックスから値を選んだ時点でA1セルにその値をコピーできるのですが、同じユーザーフォーム上にあるコマンドボタンをクリックして実行する「マクロ1」にてこのmoji1という変数を使いたいのです。 マクロ1にて、上記と同じ Range("A1").Value = moji1 というコードを記述しても、ユーザーフォームで選択した値が消えており、empty値となってしまいます。 原因をご存知の方はお教えください。

  • コンボボックスのアイテムにデータを付ける方法を教えて VB.NET

    こんばんは。 VB.NET、WinXPなのですが、 コンボボックスやリストボックスのアイテムに 別のデータ(テキスト文字列など)を一緒に 記憶させておくような方法があったと思いますが、 そのような方法は標準の機能ですか? 方法や名称だけでも教えて頂けると助かります。 よろしくおねがいします。m(__)m

  • VB.NET)コンボボックスの連動について

    失礼いたします、コンボボックスを連動させるプログラムを書いているのですがうまく連動しません、よろしければお知恵をお貸しくださいませ コードを書くにあたりの条件は、開発はVisual Basic 2005のVisual Basic データベースから呼び出す場合ならAccess 2003を使用(今現在は使用しないで開発しています) Access内でコンボボックスを、Excelでコンボボックスをなどはしません…今回はVBでコンボボックスを連動させたい 今回ちょっと公に出来ない箇所があり記号で伏せさせていただきますが、記号は日本語が入ります Form1でload(ロードってこれであってましたっけ?)部分に以下を記載 dim strdata as string = {"●●","●●","●●"} (すみません、あと一文あったのですがちょっと思い出せないので) それで連動するcomobox2には以下を記載 dim strdata as string = {"●●","●●"} dim i as integer select case strdata(i) case 0 combobox2.item.addrange("●△ ×") combobox2.item.addrange("●△ ×") combobox2.item.addrange("●△ ×") case 1 combobox2.item.addrange("●△ ×") combobox2.item.addrange("●△ ×") combobox2.item.addrange("●△ ×") となり、combobox1で最初の●●が選ばれればcombobox2のcase0を表示させるようにしたいと思っていますが上手く表示が出ません 今週中に仕上げなければいけないので昨日今日と色々調べてみたのですが、VBAやAccess・Excel関係が殆どでVBのが見つからずAccessやExcelのを見ても上手くいかなかったのと、解説が良く分からなかったので、分かりやすく解説をお願いします

  • コンボボックスのボタンを押しても、アイテムリストが開きません。

    コンボボックスのボタンを押しても、アイテムリストが開きません。 h_ComboBox = CreateWindowEx(0, TEXT("COMBOBOX"), TEXT(""),WS_CHILD|WS_VISIBLE|CBS_DROPDOWNLIST,16, 90, 500, 24,hWnd, (HMENU)IDC_COMBOBOX, h_Inst, NULL); SendMessage(h_ComboBox, CB_ADDSTRING, 0, (LPARAM)"試験1"); SendMessage(h_ComboBox, CB_ADDSTRING, 0, (LPARAM)"試験2"); SendMessage(h_ComboBox, CB_ADDSTRING, 0, (LPARAM)"試験3"); SendMessage(h_ComboBox, CB_SETCURSEL, 0, 0); このようなボックスを数個作っていますが、最初の3個のボックスはリストが開くのですが後が開きません。 解決策を教えてください。

  • VBAのコンボボックスのカラムについて

    以下のようにしてコンボボックスのカラムにも文字列が入るようにしております。 With ComboBox1 .AddItem "hogehoge" ComboBox1.List(0, 1) = "aiueo" End With これによってコンボボックスをクリックして出てくるリストにはhogehogeとaiueoの両方が 出てきますが、これを選択するとhogehogeだけがコンボボックスに残され、 (0,1)にあった文字列は消えてしまいます。 リストから選択した後もコンボボックス内にカラムの文字を残すにはどのようにすればよろしいでしょうか?(できれば区切りありで) よろしくお願いします。