- 締切済み
vb2010webページのリンクをクリック
vb2010でwebページのリンクをクリックしたいのがうまくいきません。 「ホーム」などは選択することができるのですが、「翌月」などが選択できません。コードは以下のようになっています。どなたか教えていただけないでしょうか。 Dim objIE Dim objLINK objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True 'IEウィンドウを表示 objIE.Navigate2("http://www.data.jma.go.jp/obd/stats/etrn/view/daily_s1.php?prec_no=44&prec_ch=%93%8C%8B%9E%93s&block_no=47662&block_ch=%93%8C%8B%9E&year=2000&month=01&day=&view=p1") Do Until objIE.Busy = False Application.DoEvents() Loop For Each objLINK In objIE.Document.Links If objLINK.InnerText = "翌月" Then objLINK.Click() Do Until objIE.Busy = False Application.DoEvents() Loop Exit For End If Next
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- redfox63
- ベストアンサー率71% (1325/1856)
for each oEml as HtmlElement in objIE.Document.Links を for each oEml as mshtml.HtmlElement in objIE.Document.Links といった具合にしてみてください
- redfox63
- ベストアンサー率71% (1325/1856)
外部に起動したIEだったのですね ・・・ VB2010の参照設定で COMタブの『Microsoft HTML Object Library』を追加します 先の投稿を以下のように書き換えます for each oEml as HtmlElement in objIE.Document.Links ' Count -> length if oEml.Childen.length > 0 then ' 子供がいるならその子を取得 oEml = oEml.Childen(0) end if ' alt属性をチェック if oEml.GetAttribute("alt").ToString = "翌年" then ' oEml.InvokeMember("click") oEml.click() Exit For end if next といった具合で ・・・
- redfox63
- ベストアンサー率71% (1325/1856)
このサイトの場合探すのは InnerTextでは無く alt属性にしないといけないようですよ for each oEml as HtmlElement in objIE.Document.Links if oEml.Childen.Count > 0 then ' 子供がいるならその子を取得 oEml = oEml.Childen(0) end if ' alt属性をチェック if oEml.GetAttribute("alt").ToString = "翌年" then oEml.InvokeMember("click") Exit For end if next HTMLの構造が修正された場合コードも書き換えが必要です
お礼
返信ありがとうございます。 vb初心者のため、返信内容を貼り付けてやってみたのですがエラーが出てしまいました。 エラーの内容は以下のようになっています。どうしたらよいか教えていただけないでしょうか。 型 'mshtml.HTMLAnchorElementClass' の COM オブジェクトをクラス型 'System.Windows.Forms.HtmlElement' にキャストできません。COM コンポーネントを表す型のインターフェイスを COM コンポーネントを表さない型にキャストすることはできません。ただし、基になる COM コンポーネントがインターフェイスの IID の QueryInterface 呼び出しをサポートする場合は、インターフェイスにキャストすることができます。
お礼
返信ありがとうございます。 VB2010の参照設定で COMタブの『Microsoft HTML Object Library』を追加したのですが2つのエラーが出てしまいました。 (1)'length' は 'System.Windows.Forms.HtmlElementCollection' のメンバーではありません。 (2)'Public Event Click(sender As Object, e As System.Windows.Forms.HtmlElementEventArgs)' はイベントであるため、直接呼び出すことはできません。イベントを発生させるには 'RaiseEvent' ステートメントを使用してください。 原因がよくわからないのですが教えていただけないでしょうか