
VBAについては、かなり素人です。
エクセルのメインシートからバックグラウンドで任意のファイルを次のようなVBAで読み込んでいます。
次の場合では、存在しないファイル名等をセットすると「ファイル読込エラー」になります。「存在しないファイルが指定されています」等を表示し、Open命令では、ストップしないようにするには、どう記述すればいか教示願います。
PathName:任意のパス名
CarentFile:任意のファイル名
Application.ScreenUpdating = False
Set ObjBook = Workbooks.Open(Filename:=PathName & "\" & CarentFile)
No.3ベストアンサー
- 回答日時:
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
ありがとうございます。
On Error Resume Next
Set ObjBook = Workbooks.Open(Filename・・・
If Err.Number <> 0 Then
"無視したファイルをあるセルに表示"
Exit Sub
以上のようにすることで、有効ファイルのみを読むことが
できるようになりました。
No.4
- 回答日時:
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を、入れておかないと、続きの処理を終わった後、エラー処理の部分を実行してしまいます。
No.2
- 回答日時:
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
No.1
- 回答日時:
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:以降で対応しています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
【VBA】ワークブックを開く時に...
-
String""から型'Double'への変...
-
VBAでfunctionを利用しようとし...
-
【Access】Excelインポート時に...
-
マクロで"#N/A"のエラー行を削...
-
お助けください!VBAのファイル...
-
mailstorehomeのエクスポートで...
-
文字列内で括弧を使うには
-
ACCESS VBAのSplit()関数の使用...
-
ASPでこんなエラーが出たんです...
-
実行時エラー'-2147467259(8000...
-
VBスクリプトでIEの404 not fou...
-
エクセル関数式=ABSで#VALUE!...
-
VBAで時間(00:00形式)を積算...
-
ACCESSで値を代入できないとは?
-
VB.net 重複チェックがしたいです
-
On ErrorでエラーNoが0
-
VB2010でデータグリッドビュー...
-
数式は残し値をクリアするマク...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
String""から型'Double'への変...
-
【VBA】ワークブックを開く時に...
-
お助けください!VBAのファイル...
-
VBAでfunctionを利用しようとし...
-
On ErrorでエラーNoが0
-
VBA データ(特定値)のある最...
-
インポート時のエラー「データ...
-
マクロで"#N/A"のエラー行を削...
-
VBAのリストボックスで、横スク...
-
ApplicationとWorksheetFunctio...
-
Excel vbaについての質問
-
「実行時エラー '3167' レコー...
-
実行時エラー 438 の解決策をお...
-
【VBAエラー】Nextに対するFor...
-
ACCESSで値を代入できないとは?
-
Filter関数を用いた結果、何も...
-
文字列内で括弧を使うには
-
【VB.NET】 パワポ操作を非表示で
-
レコード登録時に「演算子があ...
おすすめ情報