Microsoft Access Club Access超初心者対象Forum Access初級者対象Forum Access初・中級者対象Forum Access VBA Tips Forum DAO、ADO、SQL Forum

     

リストへもどる

投稿記事の一括表示

タイトルネット上の表取得時、.lengthで正確な要素数が拾えない、また、読み込みの途中でエラーが出て止まる
記事No16849
投稿日: 2017/02/02(Thu) 15:22
投稿者しゅういち
解決済: ON
OS:windows10 Home(64bit)
Access Version:Access 2002

すみません、accessのVBをひと月ぐらいしか経験していない 超初心者です。初めての投稿となりますが、完全に行き詰りましたので、どなたかお力添えをいただけましたら幸いです。

ある会員制のホームページの情報をaccessに落として利用したいと考えています。
そのホームページは、tabを使ったり、クリックすると別ウィンドウが開いたりと、いろいろな動作をするような、かなり凝った造りです。

先日、別の、単純なつくりのホームページからデータを抜いたことがあり、同じようにすればできるだろうと思って、いろいろなサイトを参考にしながら、次のようなコードを組んで、まずは情報が取れるか確認をしました。

Option Compare Database
Private Sub test()
Dim ie As Object
Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = True
ie.Navigate "(該当のホームページ)"
Do While ie.Busy Or (ie.ReadyState <> 4): DoEvents: Loop
For i = 0 To ie.Document.all.tags("td").length-1
MsgBox i & ":" & ie.Document.all.tags("td")(i).innertext
Next
End Sub

すると、なぜか、メッセージボックスの表示は、iが330ぐらいを過ぎたところで終わってしまいます。

MsgBox ie.Document.all.tags("td").length

として要素数を確認すると、335という奇妙な数字が出てきました。実際のホームページをエディタで開いて確認しましたが、もちろん、335以上のデータがあります。それに、該当する部分も中途半端で、その場所になにか問題があるとも考えにくいです(表の何行目かの途中で終わるのですが、この表は、各行、同じかきかたをしてあるので、そこの書き方に問題があるとは考えにくい)。

当該ホームページの書き方が複雑なので、正確な数字がでてこないのかなぁ、と思って、

For i = 0 To 5000
MsgBox i & ":" & ie.Document.all.tags("td")(i).innertext
Next

と適当な数字(5000)を入れてみたところ、これも、1900過ぎぐらいまでは認識するのですが、
途中でエラーが出て、

実行時エラー91
オブジェクト変数またはWithブロック変数が指定されていません

と表示されて、止まってしまいます。

ホームページの欲しいデータが、かなり後ろの方にあるため、困っているのですが、なんで、.Document.all.tags("td")で、tdのタグがついた全部のデータを拾ってくれないのかが、どうしてもわかりません。

対象のホームページが会員制でお伝えできないため、回答もしにくいとは思うのですが、

@lengthで要素数をきちんと拾ってくれない
A十分に大きな数字にするとlengthで確認した要素数より多く拾ってはくれるが、結局、途中でエラーが出て止まってしまう

この原因としては、どういうことが考えられるものなのでしょうか。同じような経験をしたことがある方や、なんでも結構ですので、なにか思い当たることがおありの方がいらしたら、ご教示いただければ幸いです。なにとぞよろしくお願い申し上げます。

タイトルRe: ネット上の表取得時、.lengthで正確な要素数が拾えない、また、読み込みの途中でエラーが出て止まる
記事No16850
投稿日: 2017/02/03(Fri) 00:58
投稿者しゅういち
解決済: ON
すみません、自己解決しました。
ホームページの後に#tabs1のように、表示されるtabを設定したら、情報を取ってくれました。
lengthの件はよくわかりませんが、tabの設定によるもののようでした。
お騒がせして大変失礼いたしました。

- 以下のフォームから自分の投稿記事を修正・削除することができます -
処理 記事No パスワード

ページの先頭へ 前ページへ戻る