重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

ExcelVBAについて質問です。
Webのデータを取得したいのですがたまにエラーがでます。
そこで1回エラーが出たら再度同じ処理をして、2回目もエラーが出たら
エラーメッセージを表示させたいです。
しかし1回目エラーで2回目取得できたらうまくいくのですが
2回連続でエラーになったら途中で止まってしまいます。
2回連続でエラーになった時の処理方法を教えてください。

Public Sub クリック_Click()
 On Error GoTo Err1
 Dim エラー As Integer
For エラー = 0 To 1
 'HTML読み込み
  Dim fff As String 'ファイルパス
  Dim objIE As Object 'オブジェクト
  Dim Myhtml As Variant 'HTMLタグデータ
 '制御htmlファイル
  phn = ThisWorkbook.Path
  fff = "URL"
 'Webページ表示
  Set objIE = CreateObject("InternetExplorer.Application")
  objIE.Navigate fff
 '画面表示待ち
  Do While objIE.Busy = True
   DoEvents
  Loop
 Myhtml = objIE.Document.Body.innerHTML
 objIE.Quit
 Sheets("シート").Range("A1").Value = Myhtml
Exit Sub
Err1:
 Next エラー
 MsgBox "エラー発生"
End Sub

A 回答 (2件)

一度エラーになったら、そのまま処理を続けることはできません。


必ず Resume 命令で エラーを解除する必要があります。

 :
 :
 Sheets("シート").Range("A1").Value = Myhtml
Modori:
 Next エラー
Exit Sub
Err1:
 If エラー = 0 Then Resume Modori
 MsgBox "エラー発生"
End Sub
    • good
    • 0
この回答へのお礼

どうもありがとうございました。
おかげさまでうまくいきました。
大変感謝してます。m(__)m

お礼日時:2010/10/20 09:58

接続部分はFunctionにしたらいかがですか?



Public Sub クリック_Click()
 dim i as integer

 for i = 0 to 1
  if i = 0 then
   ' 成功したら処理を抜ける
   if prfReadHtml() = true then exit for
  else
   if prfReadHtml() = false then
    ' ここでエラーメッセージを表示
   end if
  end if
 next
end sub

private function prfReadHtml() as boolean
 ' ここに読み込み処理を記入、成功したらtrue、失敗したらfalseを返す
end function
    • good
    • 0
この回答へのお礼

どうもありがとうございます。
いろいろ参考になりました。m(__)m

お礼日時:2010/10/20 09:59

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