dポイントプレゼントキャンペーン実施中!

Visual Basic(ExcelVBAですが)からブラウザを操作する方法として、こちらのコーナーからいろいろとアドバイスをいただいて徐々に理解できてきたのですが、ブラウザの表示状態を調べるパラメータ、プロパティなどはあるのでしょうか。URLを指定してブラウザに表示させ、そのURLが存在するかどうかをチェックしたいです。

Sub urlchk()
Dim tagURL As String
Dim objIE As Object

tagURL = "http://goo.ne.jp/"
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Visible = True

objIE.Navigate tagURL
Do While objIE.Busy = True
DoEvents
Loop

Stop
'この時点で、ブラウザの表示状態を調べたい

End Sub

正常に表示された場合と、指定したURLが存在せずにエラーになる場合がありますが、エラーの場合も、(1)ブラウザが完全にエラーを出す、(2)ドメイン側で存在しないというメッセージのページを返す、という2通りがあり、判定が難しそうです。そもそもこれを一般的に識別することは無理なのでしょうか。

(1)ブラウザがエラーを出す例
http://www.goo.ne.jp/nai/

(2)goo側で存在しないというメッセージを返す例
http://weather.goo.ne.jp/today/x003/index.html

A 回答 (4件)

すいません、


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

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

お礼日時:2006/05/02 10:33

#2>objIE.Busyみたいに読み込み中であることを返すプロパティはないんでしょうか?


readyState が
3 の時通信中
4 の時完了
になるので、これをチェックするといいのですが、
onreadystatechange イベントが使えるので、イベントによるコールバックを使うのがポーリングするより良いと思います。
参考URLは、JScript によるサンプルですが、基本的には同じです。

参考URL:http://okwave.jp/kotaeru.php3?qid=1674965
    • good
    • 0

CreateObject("Microsoft.XMLHTTP")


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

この回答への補足

ありがとうございます。
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のタイプミスを無くすため、システマチックにチェックしたいのです。)

補足日時:2006/04/29 00:09
    • good
    • 0

帰ってきたhtmlなりtextに



"Not Found"



"The requested URL /nai/ was not found on this server."



"指定されたページがみつかりませんでした。"

などの含まれる文字列で判定するってのではダメですか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!