- ベストアンサー
VBAで操作するジョルダン乗換案内!詳細な方法とは?
- VBAを使用してジョルダンの乗換案内を操作する方法について教えてください。
- 質問1では、検索ボタンがクリックされず詳細検索画面に進んでしまう問題が発生しています。
- また、質問2では、日時の指定ができない問題があります。ソースを見ると、nameが存在しないことが分かります。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
iwateryokou26さん はじめまして。 以下のコードでできると思います。 > objIE.document.Links(0).Clickにしてもダメでした。 検索ボタンにも名前がついているので直接クリック命令をした方が良いと思います。 > 出発地、到着地の指定はできたのですが日時の指定ができません。 このエリアはJavaScriptで処理しているようで、HTMLには表示されません。 http://eki.jorudan.co.jp/com/js/com_v1.js?0301 を分析する必要がありますね。 Sub 乗換案内() Const READYSTATE_COMPLETE As Long = 4 Dim objIE As Object Set objIE = CreateObject("InternetExplorer.Application") With objIE .Visible = True .Navigate "http://www.jorudan.co.jp/" Do While (.Busy = True) Or (.ReadyState <> READYSTATE_COMPLETE) DoEvents Loop End With With objIE.document.all .eki1.Value = "東京" ' 出発地 .eki2.Value = "品川" ' 到着地 .Dym.Value = 201208 ' 年月 .Ddd_slc.Value = 1 ' 日 .Dhh.Value = 8 ' 時 .Dmn1.Value = 0 ' 分(10分単位) .Dmn2.Value = 0 ' 分( 1分単位) .s.Click ' 検索クリック End With Set objIE = Nothing End Sub
その他の回答 (2)
- jcctaira
- ベストアンサー率58% (119/204)
iwateryokou26さん No2です。 すみません。前回はできたと思ったのですが… 以下の所を修正して試してください。 .s.Click ' 検索クリック ↓ objIE.document.all("S").Click ' 検索クリック
お礼
ありがとうございました。
- kamepanman
- ベストアンサー率43% (19/44)
わざわざ、VBAでそこまでしなくても、 フォームからhttp://www.jorudan.co.jp/norikae/cgi/nori.cgiにGETでデータ飛ばしてるだけなので、 VBAでURLを組み立ててあげれば良いと思いますが・・・。 http://www.jorudan.co.jp/norikae/cgi/nori.cgiの後に?を付けてパラメーターを連結するだけなので簡単です。 パラメータ名(フォームの部品のname属性)=値(フォームの部品のvalue属性)の形式で書きます。 複数のパラメータを送信する場合は、&で囲みます。 2バイト(日本語など)を送信する場合は、URLエンコード(%E6%9D%B1%E4%BA%ACなど)する必要があります。 VBAでURLエンコードするにはコチラを参照→http://bit.ly/PDLQ35 ざっとフォームを見てみると、URLのパラメータとフォームの対応は以下のようになっています。 http://www.jorudan.co.jp/norikae/cgi/nori.cgi?(このまま) eki1=出発地(URLエンコード)& eki2=到着地(URLエンコード)& eki3=経由駅(URLエンコード)& via_on=1&(このまま) Dym=年月(201207)& Ddd=日(1~31)& Dhh=時間(0~23)& Dmn1=十分(1~5)& Dmn2=一分(0~9)& Cway=検索種別(0:出発、1:到着、2:始発、3:終電)& C7=1&(このまま) C2=飛行機(0:おまかせ、1:使わない)& C3=高速バス(0:おまかせ、1:使わない)& C1=有料特急(0:おまかせ、1:使わない、2:100km以上なら使う)& C4=優先座席(0:指定席、1:自由席、2:グリーン席)& C6=乗換時間(0:短め、1:標準、2:余裕を持つ)& S=%E6%A4%9C%E7%B4%A2&(このまま) Cmap1=0&(このまま) rf=nr&(このまま) pg=0&(このまま) eok1=&(このまま) eok2=&(このまま) eok3=&(このまま) Csg=1(このまま) ※URLエンコードはエンコードが必要です。 ※このままは、必要なので変更せずに連結してください。 これをヒントにURLをVBAで生成するのが一番早いと思います。 文字列の連結だけですし。 できたURLを Sub 乗換案内(Url) Dim objIE As Object Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True objIE.Navigate Url Set objIE = Nothing End Sub に引数として渡せばいいかと思います。
お礼
なるほど~!そのような方法もあるのですね。 ひとつひとつ細かく説明していただいて助かります!さっそく試してみようと思います! ありがとうございました。大変参考になりました。
お礼
はじめまして。ご回答ありがとうございます。JavaScriptで処理しているからなのですね。 せっかくコードを頂いのですが.s.Clickの部分でエラーになり、ログインできませんでした・・・