
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
No.3
- 回答日時:
#2>objIE.Busyみたいに読み込み中であることを返すプロパティはないんでしょうか?
readyState が
3 の時通信中
4 の時完了
になるので、これをチェックするといいのですが、
onreadystatechange イベントが使えるので、イベントによるコールバックを使うのがポーリングするより良いと思います。
参考URLは、JScript によるサンプルですが、基本的には同じです。
参考URL:http://okwave.jp/kotaeru.php3?qid=1674965
No.2
- 回答日時:
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のタイプミスを無くすため、システマチックにチェックしたいのです。)
No.1
- 回答日時:
帰ってきたhtmlなりtextに
"Not Found"
や
"The requested URL /nai/ was not found on this server."
や
"指定されたページがみつかりませんでした。"
などの含まれる文字列で判定するってのではダメですか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
教えて下さい。
-
【Excel2016】結合されたセルを...
-
「デバイスは PRN を初期化でき...
-
モジュールとクラスの違いって...
-
クリアーとデリート
-
例外処理のフローチャートの記...
-
Perlのモジュールについて
-
Win32でInputBoxを実装するには?
-
Excel VBAでリンク切れをチェッ...
-
acwzlibとは?
-
VBAでoutlook365が起動しません。
-
グラフのX,Y座標を取得したい
-
cygwinでcshが認識されず困って...
-
bad interpreter:エラーについて
-
fetchrow_arrayとfetchrow_hash...
-
Perl モジュールのアンインスト...
-
Excel VBA 標準モジュール内で...
-
ランダムな単語を得るAPIってあ...
-
Excel VBAで、ユーザーフォーム...
-
GOSUB命令とは
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBSがコンパイルエラーになりま...
-
教えて下さい。
-
perlをバージョンアップしたら...
-
メールアドレスについて
-
w3cの検証エラー?
-
ホームページをHTTPS化したらbi...
-
WebClientの文字列送信にてエラー
-
Pythonプログラミングでエラー
-
erf(x)とerfc(x)のカタカナ読み...
-
powershellで引数受け取り時に...
-
CGIの接続エラー
-
POSTで送信するとエラーになる
-
【python】requestsでdataとし...
-
VBscriptのエラーメッセージの...
-
ruby mechanize アクセス出来ない
-
例外処理のフローチャートの記...
-
「デバイスは PRN を初期化でき...
-
Excel VBAでリンク切れをチェッ...
-
Excel VBA 定義されたプロージ...
-
Application.OnKey:項目入力中...
おすすめ情報