プロが教える店舗&オフィスのセキュリティ対策術

VBAでIEを動かそうとしている初心者です。
For Each a In ie.Document.getElementByTagName("A")
で実行時エラー'438':オブジェクトは、このプロパティまたはメソッドをサポートしていません
となるのですがなぜでしょうか

Dim ie As Object

Set ie = CreateObject("InternetExplorer.Application")

ie.Visible = True

'画面へ移動する
ie.Navigate "http://www.forest.impress.co.jp/"

waitNavigation ie

Dim a As Object

Dim urls As New Collection

For Each a In ie.Document.getElementByTagName("A")

urls.Add a.href

Next

A 回答 (3件)

> getElementsByIdでも同じメッセージが出ます。


getElementByIdというメソッドはありますが、getElementsByIdというメソッドはありません。

getElementById → 単一の要素を返すので単数形(Element)
getElementsByTagName → 配列を返すので複数形(Elements)


打ち間違えはありませんか?
以下を【コピペして】試してください。
For Each a In ie.Document.getElementsByTagName("A")
urls.Add a.href
Next
    • good
    • 0
この回答へのお礼

コピペしたら、動きました。打ち間違えでしょうか。

ありがとうございました。

お礼日時:2014/01/17 15:45

waitNavigation ie が不明なので再現できませんでした。



waitNavigation ie を Stop に置き換えて画面表示が完了してから続行すると正常に完了しました。

waitNavigation ie をコメントにして実行すると、「オートメーション エラー」になりました。

参考までに。

この回答への補足

stopに変えて、継続するとやはり同じエラーが出ます。windows7 32BIt Excel2010です。何か特別な
初期設定が必要なのでしょうか、よろしくお願いします

補足日時:2014/01/17 12:26
    • good
    • 0

メソッド名が間違っています。


× getElementByTagName
○ getElementsByTagName

この回答への補足

訂正しましたが、やはり同じメッセージが出てきます。getElementsByIdでも同じメッセージが出ます。何か設定があるのでしょうか。

補足日時:2014/01/17 08:55
    • good
    • 0

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