• ベストアンサー

EXCEL 他のブックを開く エラー時にメッセージボックスを出したい

マクロで他のブックを開き、それを加工した後にシートに読み込んでいます。 パスが違っていて開かないときには、実行時エラー76 パスが見つかりませんと出ます。 そのエラーメッセージを出さずに自作のメッセージボックスを出すことは可能でしょうか。 よろしくお願いします。

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

  • ベストアンサー
  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.4

> メッセージボックスを出したらそこで終わりになってくれるといいのですが。 以下のようにしてください。 If Dir("C:\Book1.xls") <> "" Then Workbooks.Open "C:\Book1.xls" Else MsgBox "ファイルが存在しません。", vbExclamation Exit Sub End If

noname#96687
質問者

お礼

お答えいただきどうもありがとうございました。

その他の回答 (4)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.5

こんばんは。 前回の続きだと思いますので、複数のブックの処理をする場合。 '------------------------------------------- Sub CirculateDeleteRows()   Dim fn As Variant   Dim mPath As String   'カンマ区切り   Const FILES = "123.csv, 124.csv, 126.csv, 125.csv"   'パス(ここを入れないでも可能)   mPath = Application.DefaultFilePath & "\"      For Each fn In Split(FILES, ",")     fn = Trim(fn)     If Dir(mPath & fn) <> "" Then       Call ExeMacro(mPath & fn)     Else       MsgBox mPath & fn & ": ファイルが見つかりません。", vbExclamation     End If   Next fn End Sub Sub ExeMacro(ByVal fn As String)  Dim mPath As String  Dim sep As String   mPath = Mid(fn, 1, InStrRev(fn, "\"))   fn = Mid(fn, InStrRev(fn, "\") + 1)   On Error GoTo ErrHandler   With Workbooks(fn)     .ActiveSheet.Rows("5:10").Delete Shift:=xlUp     .Close False   End With   Exit Sub ErrHandler:   'ファイルがあれば開きます。   If mPath <> "" Then sep = "\"   Workbooks.Open mPath & sep & fn      Resume End Sub

noname#96687
質問者

お礼

お答えいただきどうもありがとうございました。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

On Error Go To XXX でXXXに導けるので、そこで好きな(適当と思う)内容のMsgboxを出せばよいのでは。ファイルが存在するかどうかを、前もって聞いて、XXXに誘導するほうが、エラー箇所が具体的・限定的・確定的になってよいと思うが。

noname#96687
質問者

お礼

お答えいただきどうもありがとうございました。

noname#96687
質問者

補足

ありがとうございます。 ファイルを開くところの前に On Error Goto ErrA (End Subの直前に、) Exit Sub ErrA:MsgBox "ファイルが存在しません。" End Sub と書いて実行してみましたが、これでよさそうなのですが こんな感じでいいのでしょうか。 よろしくお願いします。

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.2

これで、どうでしょうか On Error Resume Next Workbooks.Open ("・・・・・") If Err Then MsgBox "・・・・・" End If On Error GoTo 0

noname#96687
質問者

お礼

お答えいただきどうもありがとうございました。

noname#96687
質問者

補足

どうもありがとうございます。 わざと違ったパスを入力してみましたが、 エラーの代わりにメッセージボックスは出るものの そのシートでその後の加工の作業をしてしまいます。 メッセージボックスを出したらそこで終わりになってくれるといいのですが。 よろしくお願いします。

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.1

ファイルの存在を先に確認してから開きます。 If Dir("C:\Book1.xls") <> "" Then Workbooks.Open "C:\Book1.xls" Else MsgBox "ファイルが存在しません。", vbExclamation End If

noname#96687
質問者

補足

どうもありがとうございます。 わざと違ったパスを入力してみましたが、 エラーの代わりにメッセージボックスは出るものの そのシートでその後の加工の作業をしてしまいシートがぐちゃぐちゃになってしまいます。 メッセージボックスを出したらそこで終わりになってくれるといいのですが。 よろしくお願いします。

関連するQ&A