三流君 ken3のmemo置き場

三流プログラマーのメモ書きです。主にVBAやWindowsの話題が多いです

挨拶・自己紹介:
失敗続きのAB型の変わり者 :三流プログラマー Ken3です
フリーのエンジニア・個人事業主です・・と書くと聞こえはイイが(それとなくカッコよく聞こえるが)、 現在は小さな案件の受注請負 と 短期派遣 で 日々つつましく?ほそぼそと暮らしてます。

よく検索されるキーワード: [質問回答XXXXさんへ] [CreateObject] [VBA] [JRA競馬オッズ]

XXXXXさんへ IE操作 SELECTタグで動的に変化するページの操作について

vbaでWEBの、select操作を行いたいのですが、valueを設定するも、うまく動作しません。

下記、①のselectで馬連を選択しても、②方式選択が更新されません
For Each obj In ie.document.getElementsByTagName("select")
If obj.Name = "betType" Then
obj.Value = 5

web address
https://www.oddspark.com/keiba/auth/ClassicVoteTop.do?kaisaiBi=20180827&joCode=12&raceNo=9

①賭式選択
<div class="bet">賭式を選択</div>
<select name="betType" id="betTypePullDown">
<option value="-1">-</option>,<option value="1">単勝</option>,<option value="2">複勝</option>,<option value="3">枠連</option>,<option value="5">馬連</option>,<option 
value="6">馬単</option>,<option value="7">ワイド</option>,<option value="8">3連複</option>,<option value="9">3連単</option></select>

↑にjavascriptのイベントが直接書いていない。
別ファイルなどで、jquryなどで処理しているのかなぁ。

オッズパーク?のページ、が、ログインしていないと開けないみたいなので、
確認できなかったのですが、
選択後に動的にJavascriptなどで選択内容を変更しているのかなぁとは思いますが、
チェンジなどのイベントが、SELECTのタグに書いていないのが気になっていたり。

パターン的に、
For Each obj In ie.document.getElementsByTagName("select")
If obj.Name = "betType" Then
obj.Value = 5

値を直接変えるだけだと、javascriptが走りません。

OPTIONの方をクリックするともしかしたら、走るかもしれません。
OPTIONにJavascriptが起動するようになっているなら、
三流君VBA:IE ラジオボタン(RADIO)の.Checkedと.Clickの違い
http://www.ken3.org/vba/backno/vba148.htmlwww.ken3.org
↑私のサンプルは、ラジオボタンですが、値を変えただけでは、
Javascriptコードが走らないので、
.Valueでセットしないで、

<select name="betType" id="betTypePullDown">
<option value="-1">-</option>,<option value="1">単勝</option>,<option value="2">複勝</option>,<option value="3">枠連</option>,<option value="5">馬連</option>,<option 
value="6">馬単</option>,<option value="7">ワイド</option>,<option value="8">3連複</option>,<option value="9">3連単</option></select>


option を 探って.Clickする方法に変えて動くといいのですが・・・

それか、
参考にされた私のダメサンプル
三流君VBA:IE SELECT後 .fireEventでJavaScriptのイベントを起動
http://www.ken3.org/vba/backno/vba155.htmlwww.ken3.org

'選択後にonchangeのイベントを発生させる
objIE.Document.all.JYO.fireEvent ("onchange")
として、JavaScriptのonchangeイベントを発生させました。

だと、

        For Each obj In ie.document.getElementsByTagName("select")
            If obj.Name = "betType" Then
                    obj.Value = 5 
obj.fireEvent ("onchange")

で、SELECTタグのオンチェンジを走らせる・・・

実際に動かせていないので、
想像で書いています。
ズバリの回答じゃなくてスミマセン。
解決の糸口となれば幸いです。  三流プログラマー Ken3

Ken3 ホームページ 目次

分類:HPを大きく分けると4つの柱(分類)です。

  1. [VBA・マクロ プログラミング]の解説
    当店の人気はVBA系のCreateObject("XXXXXX.application")で他のアプリケーションを操作するサンプルが人気です
  2. [プログラマーの愚痴]では、あまり見せたくない三流プログラマーの内面かな。
    三流君を踏み台にする
  3. [古いクラシック ASP(Active Server Pages)]の解説。
  4. [元コンビニ店長時代の話]が弟に巻き込まれ、失敗した脱サラ、畑違い?の仕事で失敗。
主に上記4つの分類でHP作成やメルマガの発行を行ってます。
※更新頻度が落ちていて情報の鮮度が悪いです。



本当に三流なんです(笑):たまにスゴイですねなんて言われることもありますが、
真実は→ [三流君の真実は...] ←を初めに見てくださるとわかると思います。
(からくりは、成功例↑しか載せてなくて ヒドイ失敗例はお蔵入り迷宮入りが多かったりします)