🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

5553閲覧

VBAでgetElementsByClassNameがエラーになる

DondokoYama

総合スコア5

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2019/11/22 09:17

編集2019/11/22 09:24

前提・実現したいこと

Excel(Office 365)のVBAからIE11を操作し、getElementsByClassNameを使って同じクラス名を持つ要素がいくつあるか数えたいのですが、getElementsByClassNameの部分でエラーとなり進むことができません。

発生している問題・エラーメッセージ

実行時エラー '438':
オブジェクトは、このプロパティまたはメソッドをサポートしていません。

該当のソースコード

参照設定でMicrosoft Scripting Runtime、Microsoft Internet Controls、Microsoft HTML Object Libraryをチェック済み

Private Sub CountClass() Dim IEobj As New InternetExplorerMedium IEobj.Navigate URL Call Util.WaitingForLoad(IEobj)'IEの読み込みを待つ関数を呼んで少し待ちます Dim myObj As Object Dim Counter As Integer For Each myObj In IEobj.Document.getElementsByClassName("TestClass")'ここの初回でエラーになります Counter = Counter + 1 Next End Sub

試したこと

・以前もExcel(Office 365)とIE11を使って似たツールを作ったことがあり、そちらは現状でも動いているので、URL以外を動いているツールと同じコード・参照設定にしてみて試したのですが、同じエラーが起き動きません
・サイト上に“TestClass”のクラスが間違いなく1つ以上あることの確認
・検索をしてgetElementsの「s」が抜けていないか、ClassNameはHTML Collectionであることに留意するなど見つけましたが、特に問題ないように思います
・IEの読み込み時間を長めにとり、確実に表示されてから実行しても同じエラーになります
・getElementById、getElementsByTagNameはなぜか機能します。

申し訳ないのですが、ご助力ください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ターゲットとなる「URL」のページはIEのドキュメントモードは何で表示されてますか?
IE8以下だとgetElementsByClassNameは未対応です。

投稿2019/11/22 09:46

Y.H.

総合スコア7918

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

DondokoYama

2019/11/25 00:07

恥ずかしながらドキュメントモードというものを知らず調べたところ、以前問題なく動いたサイトはIE11、今回動かないサイトはIE5になっていました。 原因がわかったので他の方法で取得しようと思います。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問