アプリ版:「スタンプのみでお礼する」機能のリリースについて

VBAについては、かなり素人です。
エクセルのメインシートからバックグラウンドで任意のファイルを次のようなVBAで読み込んでいます。
次の場合では、存在しないファイル名等をセットすると「ファイル読込エラー」になります。「存在しないファイルが指定されています」等を表示し、Open命令では、ストップしないようにするには、どう記述すればいか教示願います。

PathName:任意のパス名
  CarentFile:任意のファイル名 
Application.ScreenUpdating = False
Set ObjBook = Workbooks.Open(Filename:=PathName & "\" & CarentFile)

A 回答 (4件)

Set ObjBook = Workbooks.Open(Filename:=PathName & "\" & CarentFile)


の上下に、以下のように書き込んで下さい。


On Error Resume Next 'エラーがあっても続行する

Set ObjBook = Workbooks.Open(Filename:=PathName & "\" & CarentFile)

If Err.Number <> 0 Then 'エラーがあったら実行する
  MsgBox Error(Err.Number) 'エラー番号に相当するメッセージを表示
  Exit Sub 'マクロの実行を終了する
End If
    • good
    • 2
この回答へのお礼

ありがとうございます。
On Error Resume Next
Set ObjBook = Workbooks.Open(Filename・・・
If Err.Number <> 0 Then
"無視したファイルをあるセルに表示"
Exit Sub

以上のようにすることで、有効ファイルのみを読むことが
できるようになりました。

お礼日時:2005/03/10 18:09

No2.の方のやり方で良いんですが、もし、他でエラーが発生した時、原因不明になり訳が分からなくなると思いますので、以下のようにした方が良いかと思います。



On Error GoTo エラー処理 'エラーの場合 ラベル エラー処理: 以下を実行する。
Set ObjBook = Workbooks.Open(Filename:="D:\work\test.xls")

On Error GoTo 0 'これ以降で、エラーが起きた場合、停止する。

' 続きの処理

Exit Sub
エラー処理:
If Err = 1004 Then
  MsgBox ("存在しないファイルが指定されています")
  Resume Next
Else
  MsgBox ("ファイル読み込みエラー以外のエラーです。")
  Exit Sub
End If

ファイルの読み込みの部分だけ、On Error GoTo エラー処理 で、エラー処理をして、ファイル読み込みを終わったら、エラー処理に行かないようにする。
「エラー処理:」 等のラベルは、漢字のままでも大丈夫です。「:」は、半角です。また、「エラー処理:」の前の行には、Exit Subを、入れておかないと、続きの処理を終わった後、エラー処理の部分を実行してしまいます。
    • good
    • 0
この回答へのお礼

ありがとうございました。もっと高度なことができるようになったら、使おうと思います。

お礼日時:2005/03/10 18:16

Set ObjBook = Workbooks.Open(Filename:=PathName & "\" & CarentFile)


の上下に、以下のように書き込んで下さい。


On Error Resume Next 'エラーがあっても続行する

Set ObjBook = Workbooks.Open(Filename:=PathName & "\" & CarentFile)If Err.Number <> 0 Then

If Err.Number <> 0 Then 'エラーがあったら実行する
  MsgBox Error(Err.Number) 'エラー番号に相当するメッセージを表示
  Exit Sub 'マクロの実行を終了する
End If
    • good
    • 0

sub TEST()


on error goto ErrHander

If dir(PathName & "\" & CarentFile)<>"" Then
  Application.ScreenUpdating = False
  Set ObjBook = Workbooks.Open(Filename:=PathName & "\" & CarentFile)
  他の処理
Else
  msgbox "存在しないファイルが指定されています"
End If
Exit Sub

ErrHander:
  msgbox "何らかのエラーが発生しました。"
End Sub

補足
上記の件はIF~End IFで対応しています。
またそのほかの場合はOn Errorの行ととErrHander:以降で対応しています。
    • good
    • 0
この回答へのお礼

一番早く回答いただきありがとうございました。
2番目の方のが簡単そうだったので、採用させていただきました。

お礼日時:2005/03/10 18:19

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A