• 締切済み

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

みんなの回答

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

for each oEml as HtmlElement in objIE.Document.Links を for each oEml as mshtml.HtmlElement in objIE.Document.Links といった具合にしてみてください

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

外部に起動した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 といった具合で ・・・

omigawamachi
質問者

お礼

返信ありがとうございます。 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' ステートメントを使用してください。 原因がよくわからないのですが教えていただけないでしょうか

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

このサイトの場合探すのは 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の構造が修正された場合コードも書き換えが必要です

omigawamachi
質問者

お礼

返信ありがとうございます。 vb初心者のため、返信内容を貼り付けてやってみたのですがエラーが出てしまいました。 エラーの内容は以下のようになっています。どうしたらよいか教えていただけないでしょうか。 型 'mshtml.HTMLAnchorElementClass' の COM オブジェクトをクラス型 'System.Windows.Forms.HtmlElement' にキャストできません。COM コンポーネントを表す型のインターフェイスを COM コンポーネントを表さない型にキャストすることはできません。ただし、基になる COM コンポーネントがインターフェイスの IID の QueryInterface 呼び出しをサポートする場合は、インターフェイスにキャストすることができます。

関連するQ&A