三流君 ken3のmemo置き場

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

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

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

3.開催地を選択する SELECTタグの競馬場を選択し決定を押す

競馬場 開催地 選択のソースを見ると

<FORM method=post action=http://info.ipat.jra.go.jp/p/s>
<INPUT name=g value=Mnu01 type=hidden>
<INPUT name=s value=0000000 type=hidden>
<INPUT name=j value=6123500000 type=hidden>
<INPUT name=w value=3e2c27747c352f23 type=hidden>
<TD>
<SELECT size=4 name=m>
<OPTION selected value=61235>2012年 3回 中山 5日 (当日売)
<OPTION value=91225>2012年 2回 阪神 5日 (当日売)
<OPTION value=31211>2012年 1回 福島 1日 (当日売)
<OPTION value=91226>2012年 2回 阪神 6日 (前日売)
</OPTION></SELECT></TD>
<TD>&nbsp;</TD>
<TD class=top>
<TABLE border=0 cellSpacing=0 cellPadding=0>
<TBODY>
<TR>
<TD class=nwtop colSpan=2>情報を取得したい「年次・回次・競馬場・日次」を選択して
ください。
<TD></TD>
<TR>
<TD><INPUT value=決定 type=submit></TD></FORM>

※↑改行位置変更
となっているので、

name=m の SELECTタグのOPTIONを選択 selected 状態にして決定を押し、開催地を変更します。

3.1 SELECTタグを集める

name=m が 複数あるので、
まず、SELECT タグを集めてから、name=mを探してみます。

Set objSELECT = objIE.Document.getElementsByTagName("SELECT")
で、集めると、
objSELECT.Length で 個数がわかるので、
ループで回し、.Nameが ="m" の SELECTタグを見つけます。
For n = 0 To objSELECT.Length - 1
'※.Nameで判断する
If objSELECT(n).Name = "m" Then
Set objM = objSELECT(n) '見つけたname=mを新しくオブジェクト変数に代入

3.2 OPTIONを選択 開催地の選択

'次に下のオプションを探る
オプションの数は objM.OPTIONs.Length
と、
これも似たような感じで、.OPTIONs.Lengthで知ることができます。
'今回は使わなかったけど、中身をループで表示

For n = 0 To objM.OPTIONs.Length - 1
    Wscript.ECHO n & "番目 .InnerTEXTは " & objM.OPTIONs(n).innerTEXT
Next 

で、確認するといいかも。

テストで 3番目(2)を選択してみました
objM.OPTIONs(2).selected = True '単純にselectedプロパティをTrueでセレクト状態にする
※0 1 2 3なので、(2)のセレクト状態 .selected を True にしただけです。

3.3 決定 を 押し、開催地を変更する

これも、同じように(もう、いいかげんなれましたか?)

INPUTのタグを集める .getElementsByTagName("INPUT")を使用
Set objINPUT = objIE.Document.getElementsByTagName("INPUT")
で、集めて、
objINPUT.Length の 数だけ回して、.Value 値を確認して、.Clickしてみました。

決定ボタンを.Valueで探してから、.Clickしてみました。

    'ループで頭から表示してみる
    For n = 0 To objINPUT.Length - 1
        '※.valueで値を見る
        If objINPUT(n).Value = "決定" Then
            objINPUT(n).Click  '決定のボタンを押す
            exit For  'ループを抜ける
	end If
    Next

操作結果と解説動画

いつもの 操作動画と解説動画です。
テスト動画 : http://www.youtube.com/watch?v=gzkfBEEsRn0
www.youtube.com

テストのソースコード

競馬場・開催地の選択、テストのソースコードです。

'またまた、新しく起動した IPAT情報メインメニュー を 探す

    'シェルのオブジェクトを作成する
    Set objShell = CreateObject("Shell.Application")

    Set objIE = Nothing    
    'ウインドウの数だけまわすぞ
    For Each objWindow In objShell.Windows
        'TypeNameでオブジェクト変数のタイプを表示する
        'HTMLDocumentだったら
        If TypeName(objWindow.document) = "HTMLDocument" Then
           If objWindow.document.URL = "https://info.ipat.jra.go.jp/p/s" Then
               Set objIE = objWindow '見つけたウインドウを(IE)を代入
               Exit For   
           End IF
        End If
    Next
    Set objShell = Nothing

    '見つけたかチェック
    If objIE Is Nothing Then
        msgbox "エラー IPAT情報メインメニュー 見つかりません"
        wscript.quit
    End If   

'SELECT name=m の 開催地オプションを選択する

    'SELECTのタグを集める .getElementsByTagName("SELECT")を使用
    Set objSELECT = objIE.Document.getElementsByTagName("SELECT")

    Wscript.ECHO "SELECTのタグは " & objSELECT.Length & "個です。"  

    'ループで頭から表示してみる
    Set objM = Nothing
    For n = 0 To objSELECT.Length - 1
        '※.Nameで判断する
        If objSELECT(n).Name = "m" Then
            Set objM = objSELECT(n)  '見つけたname=mを新しくオブジェクト変数に代入
            exit For  'ループを抜ける
	End If
        'Wscript.ECHO n & "番目 .Name=" & objSELECT(n).Name  '名前の確認
        'Wscript.ECHO objSELECT(n).OuterHTML
    Next

    Set objSELECT = Nothing  'オブジェクト変数解放

    '見つけたかチェック
    If objM Is Nothing Then
        msgbox "エラー 開催地 Name=m が 見つかりません"
        wscript.quit
    End If   

'次に下のオプションを探る

    Wscript.ECHO "オプションの数は" & objM.OPTIONs.Length
    '中身をループで表示
    For n = 0 To objM.OPTIONs.Length - 1
        Wscript.ECHO n & "番目 .InnerTEXTは " & objM.OPTIONs(n).innerTEXT
    Next 

    'テストで 3番目(2)を選択する ※0 1 2 3 
    objM.OPTIONs(2).selected = True   '単純にselectedプロパティをTrueでセレクト状態にする

'決定を押し、開催地を切り替える

    'INPUTのタグを集める .getElementsByTagName("INPUT")を使用
    Set objINPUT = objIE.Document.getElementsByTagName("INPUT")

    Wscript.ECHO "INPUTのタグは " & objINPUT.Length & "個です。"  

    'ループで頭から表示してみる
    For n = 0 To objINPUT.Length - 1
        '※.valueで値を見る
        If objINPUT(n).Value = "決定" Then
            objINPUT(n).Click  '決定のボタンを押す
            exit For  'ループを抜ける
	end If
    Next

JRA IPAT単勝オッズ取得 開発の流れ と 全体の流れ

JRA IPAT 単勝オッズの取り込み - 三流君ken3のひとりグループ
http://ken3hitori.g.hatena.ne.jp/bbs/30
↑の流れを見て、笑ってください・・・
JRA IPATを操作する他のサンプル・類似処理は、
JRA IPAT ログイン処理
JRA IPAT 入金処理 - 三流君ken3のひとりグループ
です。また、VBA IE操作の解説は
三流君VBAでIE操作 InternetExplorer.Applicationを操作する
で細々やっているので、よかったらお時間のある時にのぞきにきてください。

Ken3 ホームページ 目次

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

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



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