
こんにちは、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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) EXCEL VBAで NHK NEWSの NEWSデータ内容取得が できない 1 2023/04/09 12:26
- Visual Basic(VBA) 【VBAエラー】Nextに対するForがありません 対策について 5 2022/11/21 21:26
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- Visual Basic(VBA) VBA 改行コードの取り方 1 2022/03/22 14:14
- Visual Basic(VBA) Changeイベントで複数セルへの貼り付けおよび値削除時に1個目のセルのみエラーになる 3 2022/12/21 09:07
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/09 10:33
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) findメソッドの変数について 6 2023/06/23 08:01
- その他(パソコン・周辺機器) dvd書き込めない 5 2022/03/22 19:06
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
worksheetFunctionクラスのVloo...
-
「Columns("A:C")」の列文字を...
-
テキストボックス中の文字列の...
-
エクセルのVBAの標準モジュール...
-
VBAで Set wb = Sheets(1).Cop...
-
オブジェクト変数の取得について
-
ExcelVBAでのNZ関数について
-
Excelでフィルタをかけると警告...
-
EXCEL VBA オートシェイプナン...
-
findメソッドの変数について
-
【VB】【エクセル操作】 SaveAs...
-
エクセルマクロエラー「'Cells'...
-
上下の位置揃えについて
-
AccessVBAで「dim dbs as datab...
-
VBA オブジェクトが空かどうか...
-
オブジェクト変数またはWITHブ...
-
Excelオブジェクトの操作
-
アクセスにてオブジェクト名変...
-
ある文字列が全て数字であるか...
-
エクセル エラー438
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
worksheetFunctionクラスのVloo...
-
「Columns("A:C")」の列文字を...
-
エクセルのVBAの標準モジュール...
-
Excelでフィルタをかけると警告...
-
実行時エラー 3265「要求された...
-
VBAで既に開いている別アプリケ...
-
テキストボックス中の文字列の...
-
ExcelVBAでのNZ関数について
-
[VBA]CDOメッセージ送信エラー
-
EXCEL VBA オートシェイプナン...
-
VBAで Set wb = Sheets(1).Cop...
-
エクセルマクロエラー「'Cells'...
-
AccessVBAで「dim dbs as datab...
-
Excel VBAでWordの複数ファイル...
-
オブジェクトが見つかりません
-
CreateObjectとGetObjectの違い
-
エクセルVBAで配列内に空白デー...
-
オブジェクト変数またはWITHブ...
-
VBScriptからDLL参照設定したい
-
エクセルVBAでcode128のバー...
おすすめ情報