Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1620 / 13644 ツリー ←次へ | 前へ→

【73053】VBAでのソース取得のタイムアウトについて 宮本 12/11/1(木) 11:01 質問[未読]
【73056】Re:VBAでのソース取得のタイムアウトについ... ウッシ 12/11/1(木) 14:41 回答[未読]
【73060】Re:VBAでのソース取得のタイムアウトについ... 宮本 12/11/1(木) 17:51 回答[未読]
【73061】Re:VBAでのソース取得のタイムアウトについ... ウッシ 12/11/1(木) 23:54 回答[未読]
【73063】Re:VBAでのソース取得のタイムアウトについ... 宮本 12/11/2(金) 16:22 回答[未読]
【73065】Re:VBAでのソース取得のタイムアウトについ... ウッシ 12/11/2(金) 16:47 回答[未読]
【73070】Re:VBAでのソース取得のタイムアウトについ... 宮本 12/11/5(月) 10:10 回答[未読]
【73071】Re:VBAでのソース取得のタイムアウトについ... ウッシ 12/11/5(月) 11:23 回答[未読]
【73079】Re:VBAでのソース取得のタイムアウトについ... 宮本 12/11/5(月) 17:45 回答[未読]

【73053】VBAでのソース取得のタイムアウトについて
質問  宮本  - 12/11/1(木) 11:01 -

引用なし
パスワード
   VBAにおいて、ループで複数のURLを読み込んで、
ソースを処理するマクロを組んでいるのですが
ステータスコードが返ってくる場合は処理ができたのですが
なかなか接続できないURLになると
「処理がタイムアウトしました」とダイアログがでて停止してしまいます。
タイムアウト関数を入れてみましたがうまくいかず
タイムアウトのときはスキップするようにしたいのですが…
どなたかご教授いただければ幸いです。
※制限回避のために\を入れております。少し見づらいかもしれませんが
何卒よろしくお願いいたします。


For s = 1 To 40
URL = Worksheets("Sheet1").Cells(s, 1).Value
Set \h\t\t\p = CreateObject("Win\H\t\t\p.Win\H\t\t\pRequest.5.1")
sURI = URL

With \h\t\t\p
.SetTimeouts 60000, 60000, 60000, 60000
.Open "GET", sURI, False
.Send
If .Status <> 200 Then
Else
html = StrConv(\h\t\t\p.responsebody, vbUnicode)
End If
'ソース処理部
next

【73056】Re:VBAでのソース取得のタイムアウトにつ...
回答  ウッシ  - 12/11/1(木) 14:41 -

引用なし
パスワード
   こんにちは

取り敢えず、動くコードが無いと回答も付きにくいので、

Sub test()
  Dim objRequest As Object
  Dim sHTML   As String
  Dim s     As Long
  
  Set objRequest = CreateObject("MSXML2.ServerXMLHTTP.4.0")

  For s = 1 To 2
    With objRequest
      .Open "GET", Worksheets("Sheet1").Cells(s, 1).Value, False
      .SetRequestHeader "Content-type", "text/html"
      .SetTimeouts 1000, 1000, 1000, 1000
      .Send
      If .Status <> 200 Then
      Else
        Debug.Print StrConv(.responsebody, vbUnicode)
      End If
      'ソース処理部
    End With
  Next
End Sub

セルA1、A2 に適当に URL を入力して実行にしておきました。

【73060】Re:VBAでのソース取得のタイムアウトにつ...
回答  宮本  - 12/11/1(木) 17:51 -

引用なし
パスワード
   ウッシさん、ありがとうございます。
取得部が若干違いますが、自分のコードとウッシさんのコードだと
取得に違いがでますでしょうか?
自分のコードは、ネットで調べて継ぎ接ぎのように作ったので
イマイチ自信がなくて…

【73061】Re:VBAでのソース取得のタイムアウトにつ...
回答  ウッシ  - 12/11/1(木) 23:54 -

引用なし
パスワード
   こんばんは

>取得に違いがでますでしょうか?

試して貰えますか?

【73063】Re:VBAでのソース取得のタイムアウトにつ...
回答  宮本  - 12/11/2(金) 16:22 -

引用なし
パスワード
   すみません、試してみました。
やはり、ブログ系、はてな系のURLで
「処理がタイムアウトしました」とでます。その状態で
デバック、継続をすると
「This method cannot be called after the send method has been called」
と出て、前に進まない状態になってしまいました。
.sendの位置でエラーが出ているようです。

宜しくお願い致します。

【73065】Re:VBAでのソース取得のタイムアウトにつ...
回答  ウッシ  - 12/11/2(金) 16:47 -

引用なし
パスワード
   こんにちは

      .Send
      While .readyState <> 4
        .waitForResponse 1000
      Wend

としてみるとどうですか?

【73070】Re:VBAでのソース取得のタイムアウトにつ...
回答  宮本  - 12/11/5(月) 10:10 -

引用なし
パスワード
   すみません、レス遅れました、
改めていただいた記述でも、タイムアウトと73063のエラーが出るようです。
取得のURLの反応が遅い時になるのですかね、、、
ブラウザだと普通に開けるのですが

【73071】Re:VBAでのソース取得のタイムアウトにつ...
回答  ウッシ  - 12/11/5(月) 11:23 -

引用なし
パスワード
   こんにちは

具体的なURLが分かってこちらでも再現出来ればいいんですけど
そうもいかないでしょうから、ちょっと分からないです、済みません。

他の方の回答を待って下さい。

【73079】Re:VBAでのソース取得のタイムアウトにつ...
回答  宮本  - 12/11/5(月) 17:45 -

引用なし
パスワード
   了解です。お手数かけてすみません
引っかかるのはブログ系とおもいきや
タイミングによって様々なので提示が難しいです。。。
自分でも再現ができたりできなかったりで…

1620 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free