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件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
for each oEml as HtmlElement in objIE.Document.Links
を
for each oEml as mshtml.HtmlElement in objIE.Document.Links
といった具合にしてみてください
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
といった具合で ・・・
返信ありがとうございます。
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' ステートメントを使用してください。
原因がよくわからないのですが教えていただけないでしょうか
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の構造が修正された場合コードも書き換えが必要です
返信ありがとうございます。
vb初心者のため、返信内容を貼り付けてやってみたのですがエラーが出てしまいました。
エラーの内容は以下のようになっています。どうしたらよいか教えていただけないでしょうか。
型 'mshtml.HTMLAnchorElementClass' の COM オブジェクトをクラス型 'System.Windows.Forms.HtmlElement' にキャストできません。COM コンポーネントを表す型のインターフェイスを COM コンポーネントを表さない型にキャストすることはできません。ただし、基になる COM コンポーネントがインターフェイスの IID の QueryInterface 呼び出しをサポートする場合は、インターフェイスにキャストすることができます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) EXCEL VBAで NHK NEWSの NEWSデータ内容取得が できない 1 2023/04/09 12:26
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Visual Basic(VBA) InputBoxでキャンセルボタンを押したらファイル自体を閉じたい 3 2022/07/23 17:52
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) Excel VBAの解読について質問があります。 概要は、マクロでチェックボックスにチェックすると日 1 2023/02/10 07:50
- Visual Basic(VBA) ExcelVBAの転記について 1 2022/03/23 20:13
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) ExcelVBAでDo Until loopのネスト、IF文を使って一致する物と一致しない物としたい 11 2022/12/24 17:46
- Visual Basic(VBA) エクセルVBAのコードで質問です。 下のコードはJ16の文字列をB3を起点とする範囲から探して、見つ 5 2023/04/07 11:07
- Visual Basic(VBA) 動きっぱなしです。止め方とプロシージャの間違いを教えて下さい! 5 2022/08/15 23:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Delphiでコンポーネント名を変...
-
subsequentとnextの違いってな...
-
VBA public変数はどのようなこ...
-
VBAで入力数値について
-
VB.NETでのイベントの途中終了
-
C#のループでtextboxに値を入れ...
-
String型の値にスラッシュをつ...
-
チェックボックスを操作できな...
-
エクセルVBAでテキストボッ...
-
Excel ユーザーフォームで計算 ...
-
他のフォームから別のフォーム...
-
テキストボックスに大文字を
-
【VB6.0】 あるフォームから他...
-
リストビューの列ヘッダーの幅...
-
sublimit textっていうエディタ...
-
VB6でClickイベントを一時的に...
-
テキストボックスを空白にする方法
-
VB
-
FlexGridで文字色を変更。
-
WORd VBA 文章を単語に分解する
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
レコードセットにnullの場合
-
タイムアウトする仕組みを作りたい
-
subsequentとnextの違いってな...
-
verilogのcase文
-
vbsのmsgboxランダム表示について
-
【FPGA】VHDLのprocessとevent
-
TreeViewのTag情報取得
-
Verilogの文法
-
リスト間のアイテム移動について
-
日付の重複
-
エクセルVBAついて ①if•••••the...
-
文字の連結がうまくいかない
-
Scilabの&と&&に関する質問です
-
なんで? cEn-P^-1AP=P^-1(cEn-AP)
-
delphi
-
vb2010webページのリンクをクリ...
-
EXCEL VBA 文字 アドレス 検...
-
整順リスト形式の英単語辞書(pa...
-
Matlab
-
三項でたとえば交換って
おすすめ情報