• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBからブラウザの表示状態(リクエストURLの存否)を確認するには)

VBからブラウザの表示状態を確認する方法

このQ&Aのポイント
  • Visual Basic(ExcelVBAですが)からブラウザを操作する方法として、こちらのコーナーからいろいろとアドバイスをいただいて徐々に理解できてきたのですが、ブラウザの表示状態を調べるパラメータ、プロパティなどはあるのでしょうか。URLを指定してブラウザに表示させ、そのURLが存在するかどうかをチェックしたいです。
  • 正常に表示された場合と、指定したURLが存在せずにエラーになる場合がありますが、エラーの場合も、(1)ブラウザが完全にエラーを出す、(2)ドメイン側で存在しないというメッセージのページを返す、という2通りがあり、判定が難しそうです。そもそもこれを一般的に識別することは無理なのでしょうか。
  • (1)ブラウザがエラーを出す例 http://www.goo.ne.jp/nai/ (2)goo側で存在しないというメッセージを返す例 http://weather.goo.ne.jp/today/x003/index.html

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

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.4

すいません、 #3で、onreadystatechange が使えると書いていますが、 実際に試してみたところ、ExcelVBA からは、利用できないようです。 Do While req.readyState <> 4 DoEvents Loop のようにして下さい。

dKacho
質問者

お礼

BLUEPIXYさん、何度もありがとうございました。 No.4でアドバイスいただきました方法でバッチリ動きました。 本当に助かりました。

その他の回答 (3)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

#2>objIE.Busyみたいに読み込み中であることを返すプロパティはないんでしょうか? readyState が 3 の時通信中 4 の時完了 になるので、これをチェックするといいのですが、 onreadystatechange イベントが使えるので、イベントによるコールバックを使うのがポーリングするより良いと思います。 参考URLは、JScript によるサンプルですが、基本的には同じです。

参考URL:
http://okwave.jp/kotaeru.php3?qid=1674965
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

CreateObject("Microsoft.XMLHTTP") を使ってHTTPリクエストを出すことができます。 この場合、status プロパティを使ってサーバーが返してくるステータスコード statusText でその意味する英文を得ることができます。 でも、二度手間になるような気もするし そこまでする必要も無いような気がします。 http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/objects/obj_xmlhttprequest.asp

dKacho
質問者

補足

ありがとうございます。 Statusを取ることはできましたが、応答に時間がかかってStatusが返ってこないままになるケースもあります。   objReq.Open "GET", ActiveCell.Offset(0, 1).Text   objReq.send   Do While ActiveCell.Text = ""     ActiveCell.Value = objReq.StatusText     If ActiveCell.Text = "" And Now > wt Then       ActiveCell.Value = "Time Out"       Exit Do     End If   Loop みたいなコードを書いてみましたが、objIE.Busyみたいに読み込み中で あることを返すプロパティはないんでしょうか? (URLのタイプミスを無くすため、システマチックにチェックしたいのです。)

noname#27115
noname#27115
回答No.1

帰ってきたhtmlなりtextに "Not Found" や "The requested URL /nai/ was not found on this server." や "指定されたページがみつかりませんでした。" などの含まれる文字列で判定するってのではダメですか?

関連するQ&A