ここから本文です

VBAのgetElementByIdについてです。

yah********さん

2015/1/1213:48:59

VBAのgetElementByIdについてです。

URLからgetElementByIdを使ってID(Data_0~Data_i)からデータを取得するプログラムなのですが、下のプログラムはgetElementByIdのオブジェクトがなくなると終了するのではなくエラーがでます。

条件文をどのようにすればエラーが出ずに正常に終了するでしょうか?
自分はNothingが帰ったら終了としたつもりなのですがどうもうまくいきません。
※必要ないと思った処理は削除してます。

'*********************************************************
class_place = "Data_0"
'
Do While Not IE.Document.getElementById(class_place) Is Nothing

class_txt = IE.Document.getElementById(class_place).outerHTML
i = i + 1
class_place = "Data_" & i
Loop
'*********************************************************

閲覧数:
1,873
回答数:
1
お礼:
500枚

違反報告

ベストアンサーに選ばれた回答

jun********さん

2015/1/1217:21:22

こちらで似たようなループを組んでみましたが、エラーは出ませんでした。省いた処理があるとのことですが、それも含めて、どこでどのようなエラーが出たのでしょうか。

ちなみに、こちらで試したサンプルです。

Sub test()
Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = True
ie.Navigate ("http://www.yahoo.co.jp")

Do
DoEvents
Loop Until (ie.Busy = False) And (ie.ReadyState = 4)

classid = "wrapper"

Do While Not ie.document.getElementByID(classid) Is Nothing
DoEvents
classid = classid & ie.document.getElementByID(classid).InnerText
Loop

ie.Quit
End Sub

  • 質問者

    yah********さん

    2015/1/1220:03:27

    回答ありがとうございます。
    自分でもサンプルをしてみましたが、一度classidを取得して次のループに入るときDo While...のとこで"424"エラーがでます。
    getElementByIdの取得できなかった場合の戻り値はNotingだと思うのですが違うのかな...
    jun_saedaさんはできたんですよね?

    デバッグではDo While... の部分が黄色くなるので原因はここだと思ってますが。
    省いたといった部分を実際に省いて実行しても同じでしたのでたぶん変わらないかと思います。

  • その他の返信(1件)を表示

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

質問した人からのコメント

2015/1/12 20:13:57

無事解決できました!
回答&お手伝いありがとうございました。

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる