[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『オブジェクト変数またはWithブロック変数が設定されていません…と出ます』(スフレ)
IEオブジェクトを使ってネットから情報を取得するためのVBAを作ろうとしていますが、エラーが出て何が悪いのかわからないので教えてください。 下記VBAは私が作っているコードの一部を簡略化したものです。エラーが出る部分だけを抜き出しました。
1.まずUserFormをひとつ作ります。
2.CommandButton1と大きめのTextbox1(MultilineをTrueに)を作ります。
3.このCommandButton1を押すと取得したhtmlの内容(テキスト)がTextbox1に表示されるように以下のコードを書きます。 (実際はこのhtmlからさらにデータを抽出しますが今回は省略します)。
=================================================================
Private Sub CommandButton1_Click()
Dim objIE Dim strBody As String Dim ln As Long
'objIEオブジェクトを作成 Set objIE = CreateObject("InternetExplorer.Application")
'指定したURLを表示 objIE.Navigate "http://money.goo.ne.jp/investment/stocks/rw.php?url=/goo/market/index.html"
'ページの読み込みが終わるまでループ Do Until objIE.Busy = False Loop
'表示したページの<BODY>部のHTMLを取得 strBody = objIE.Document.Body.InnerHtml '…@
'objIEオブジェクトの破棄 Set objIE = Nothing
TextBox1.Text = strBody
End Sub
=================================================================
で、UserForm1を実行し、CommandButton1を押すとhtmlの内容がTextBox1に表示される と思います。 ですが、何回か押すと以下のようなエラーが出るのです。エラー箇所は上記コードの@の場所です。
「実行時エラー'91': オブジェクト変数またはWithブロック変数が設定されていません」
CommandButton1を1回目押したときにエラーが出る場合や、5回目のときにエラーが出る場合などエラーが出るタイミングが一定ではありません。 なぜこのようなことが起こるのでしょうか?また対処法は何かあるでしょうか?
私は以下のサイトを参考に上記コードを作りました。 http://www.happy2-island.com/vbs/cafe02/capter00701.shtml http://www.happy2-island.com/vbs/cafe02/capter00707.shtml
WindowsXP Excel2000SP2
長文で申し訳ありませんが、以上よろしくお願いいたします。
>'ページの読み込みが終わるまでループ >Do Until objIE.Busy = False >Loop 待ちのところを下のコードに変えてみてください。 読みこみが完了する前に次の処理へ行っているのでエラーが出ているのでしょう。
While (objIE.busy = True Or objIE.readystate <> 4) DoEvents Wend (やっちん)
やっちんさんありがとうございます!何度押してもエラーが出なくなりました。 Do〜Loopが原因だったとは…。 (スフレ)
ぶしつけに申し訳ありません。
ご回答何卒宜しくお願い致します。
(↑は[スフレ]さんではないと思われるので) このスレッドは2007/02/19に投稿されたものです。 ニックネーム(ハンドルネーム)を投稿の都度御記名ください。 混乱を避けるためでもあり、また、この掲示板のお約束でもあります。 関連はしているかもしれませんが、新規で御質問される案件かと思われます。 >サイト自体がプログラムでのアクセスを拒否 ということなので、結論を出すには具体的なサイトアドレスの提示も 必要かもしれません。 (みやほりん)(-_∂)b 2011/07/14
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.