【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?

マクロで他のブックを開き、それを加工した後にシートに読み込んでいます。
パスが違っていて開かないときには、実行時エラー76 パスが見つかりませんと出ます。

そのエラーメッセージを出さずに自作のメッセージボックスを出すことは可能でしょうか。

よろしくお願いします。

A 回答 (5件)

> メッセージボックスを出したらそこで終わりになってくれるといいのですが。



以下のようにしてください。

If Dir("C:\Book1.xls") <> "" Then
Workbooks.Open "C:\Book1.xls"
Else
MsgBox "ファイルが存在しません。", vbExclamation
Exit Sub
End If
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/10/21 23:26

こんばんは。



前回の続きだと思いますので、複数のブックの処理をする場合。

'-------------------------------------------
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
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/10/21 23:27

On Error Go To XXX


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

この回答への補足

ありがとうございます。

ファイルを開くところの前に
On Error Goto ErrA

(End Subの直前に、)
Exit Sub
ErrA:MsgBox "ファイルが存在しません。"
End Sub

と書いて実行してみましたが、これでよさそうなのですが
こんな感じでいいのでしょうか。

よろしくお願いします。

補足日時:2009/10/21 21:55
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/10/21 23:27

これで、どうでしょうか


On Error Resume Next
Workbooks.Open ("・・・・・")
If Err Then
MsgBox "・・・・・"
End If
On Error GoTo 0

この回答への補足

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

補足日時:2009/10/21 21:32
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/10/21 23:27

ファイルの存在を先に確認してから開きます。



If Dir("C:\Book1.xls") <> "" Then
Workbooks.Open "C:\Book1.xls"
Else
MsgBox "ファイルが存在しません。", vbExclamation
End If

この回答への補足

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

補足日時:2009/10/21 21:27
    • good
    • 0

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