アプリ版:「スタンプのみでお礼する」機能のリリースについて

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/da …

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

A 回答 (3件)

for each oEml as HtmlElement in objIE.Document.Links



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

外部に起動した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

といった具合で ・・・
    • good
    • 0
この回答へのお礼

返信ありがとうございます。
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' ステートメントを使用してください。

原因がよくわからないのですが教えていただけないでしょうか

お礼日時:2011/07/15 21:43

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

返信ありがとうございます。

vb初心者のため、返信内容を貼り付けてやってみたのですがエラーが出てしまいました。

エラーの内容は以下のようになっています。どうしたらよいか教えていただけないでしょうか。


型 'mshtml.HTMLAnchorElementClass' の COM オブジェクトをクラス型 'System.Windows.Forms.HtmlElement' にキャストできません。COM コンポーネントを表す型のインターフェイスを COM コンポーネントを表さない型にキャストすることはできません。ただし、基になる COM コンポーネントがインターフェイスの IID の QueryInterface 呼び出しをサポートする場合は、インターフェイスにキャストすることができます。

お礼日時:2011/06/30 19:31

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!