
こんにちは、VBであるホームページにアクセスして自動的にソースから内容を取得するプログラムを作成しているのですが、エラー91(オブジェクト変数またはブロック変数が設定されていません)が出て困っています。
しかも、同じ処理内容なのに、時間によってエラーが出るときと出ないときがあり、困っています。コード(一部)は、以下のようになっています。
Dim objIE As Object
Dim a As String
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Navigate "サイトのURL"
Do While objIE.Busy = True
DoEvents
Loop
On Error GoTo Error2
a = objIE.Document.body.innerHTML ……(1)
On Error GoTo 0
(1)のところで、8回に1回くらいの割合で止まります。[デバッグ]を押してすぐにまた再生ボタンを押すと、実行できます。そこで質問なのですが、
(1) エラーの原因は何でしょうか? objIEの中味が読み込み途中(IEなので処理時間がかかる)なのに参照しようとしてるからでしょうか?(でもちゃんとBusyプロパティで…)
(2) Busyプロパティは「重要なページを読み込んでいる」というプロパティということですが、そのURLの全ての情報を読み込んだかどうか、というようなプロパティはないのでしょうか?
(3) On Errorが通用しません。On Errorでジャンプ先を指定しているのに、Error:の箇所にジャンプしないことが2回に1回くらいあります。なぜでしょうか。
よくある質問かと思いますが、調べてもよくわかりません。ひとつでも分かりましたら、ぜひ教えてください。よろしくお願いします。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
Wizard_Zeroと申します。
個人的にはBusyやReadyStateの変化をLoopで待つのはあまり好ましくないと思います。
以下のようにすれば、ダウンロードの完了をイベントで通知してもらうことが出来ます。
※ 参照設定で「Microsoft Internet Contols」にチェックをつけてください。
Private WithEvents objIE As WebBrowser
Private Sub Command1_Click()
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Navigate "(サイトのURL)"
End Sub
Private Sub objIE_DocumentComplete(ByVal pDisp As Object, URL As Variant)
Dim a As String
a = pDisp.document.body.innerHTML
End Sub
No.2
- 回答日時:
(2)のすべての情報を読み込んだかどうか・・・の件ですが、
ReadyStateプロパティはどうでしょうか?
InternetExplorerオブジェクトの例ではないのですが WebBrowserオブジェクトで以下のような掲示板の記事を見かけました。
http://homepage1.nifty.com/MADIA/vb/vb_bbs2/2003 …
実際に試したわけではないので自信はありませんがご参考までに。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
worksheetFunctionクラスのVloo...
-
VBAからPDFファイルにパスワー...
-
AccessVBAで「dim dbs as datab...
-
VBA:オートシェイプの線の長...
-
エクセルのVBAの標準モジュール...
-
エクセル エラー438
-
「Columns("A:C")」の列文字を...
-
VBA オブジェクトが空かどうか...
-
エクセルマクロエラー「'Cells'...
-
コンパイルすると「メソッドま...
-
VBAでエクセルに入力された複数...
-
メモリ解放について(ASP)
-
<excel vba>selenium basicのWe...
-
VBでPDFファイルを編集する
-
VBScriptからDLL参照設定したい
-
Excel VBA オブジェクトマクロ ...
-
上下の位置揃えについて
-
マクロ初心者です。 インデック...
-
ExcelVBAのコントロールの種類...
-
どう増強すべきか
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
worksheetFunctionクラスのVloo...
-
「Columns("A:C")」の列文字を...
-
PowerPointVBAでスライドマスタ...
-
エクセルのVBAの標準モジュール...
-
Excelでフィルタをかけると警告...
-
実行時エラー 3265「要求された...
-
テキストボックス中の文字列の...
-
VBAからPDFファイルにパスワー...
-
VBAで既に開いている別アプリケ...
-
Excel VBAでIEにアクセスするプ...
-
オブジェクトが見つかりません
-
ExcelVBAでのNZ関数について
-
エクセルVBAでcode128のバー...
-
WordにOLEで埋め込んだExcelでW...
-
AccessVBAで「dim dbs as datab...
-
エクセルマクロエラー「'Cells'...
-
エクセル エラー438
-
[VBA]CDOメッセージ送信エラー
-
VBAで作成するメール(開封確認...
-
VBScriptでファイルの日時順(降...
おすすめ情報