• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBA IE制御 TABLE取得できません)

VBA IE制御 TABLE取得できません

このQ&Aのポイント
  • VBAを使用してWEBページからテーブルを取得するコードですが、「レース検索結果」のテーブルを取得できません。
  • コードを実行してもエラーは出ませんが、メッセージボックスが表示されず、ローカルウィンドウで確認したところ、「レース検索結果」が取得できていません。
  • WEBページのソースには「レース検索結果」のsummaryが存在しているのに取得できない理由が分かりません。

質問者が選んだベストアンサー

  • ベストアンサー
  • Abyss1
  • ベストアンサー率100% (1/1)
回答No.2

こんにちは。 今回の場合、下記の手順 > Do While objIE.Busy = True Or objIE.readyState <> 4 > DoEvents > Loop でのDocument完全ロード確認は不十分です。 素直にIEイベントを使う事をお勧めします。 (NavigateComplete2とDocumentComplete) http://support.microsoft.com/kb/180366/ja 個人的にはHTMLTable取得が目的なら、WinHttpRequestオブジェクトを 利用するのがよい気がしますね。

cskw
質問者

お礼

Abyss1様 ご回答ありがとうございました。 IEでイベントが使用できることを初めて知りました。 クラスモジュールを使用した経験がほとんどありません。 今のところは安定して動作はしませんが、試行錯誤しながらでもやってみたいと思います。 改めて、ありがとうございます。

cskw
質問者

補足

Abyss様 ご回答ありがとうございます。 大変、勉強になります。 まずは検証してみたいと思いますのでお礼は改めてとさせていただきます。

その他の回答 (1)

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.1

HTMLInputButtonElement型を使っているところなど、初めて見たので動かしてみましたが、当方の環境では問題なく動作しました。 Windows7Home-64bit、xl2010-32bit、IE11です。 正常終了以降、 With objTable For Each myRow In .Rows For Each myCell In myRow.Cells Debug.Print Application.WorksheetFunction.Clean(myCell.innerText); Debug.Print " "; Next myCell Debug.Print Next myRow End With てな感じで、データが取得できました。 開催日 開催 天気 R レース名 映像 距離 頭数 馬場 タイム ペース 勝ち馬 騎手 調教師 2着馬 3着馬 2014/06/22 3阪神6 雨 1 3歳未勝利 ダ1800 16 稍 1:53.7 38.2-37.7 ... なお、Dim objAllInput As Object のところはIHTMLElementCollection型だと動作しましたが、I無しだと後のFor Eachループのところで型違いとなりました。I有無の違いが良くというかさっぱり分かりません。 ご参考まで。

cskw
質問者

お礼

mitarashi様 検証して頂き誠にありがとうございます。 お礼が遅くなりまして申し訳ございません。 mitarashi様の環境では動作したとしますと当方の環境に問題があるのかもしれません。 このような現象は初めてで全く困惑しておる次第です。 改めてありがとうございます。