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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- PostgreSQL ポストグレにあるExcelファイルを開くには 1 2022/12/13 18:07
- Visual Basic(VBA) 3個のfileのセルデータを1個のfileのセルに貼り付けるVBAコードですが。 1 2023/02/20 09:21
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/06 13:01
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Visual Basic(VBA) 【VBA】写真の縦横比を変えずに貼り付ける 5 2023/06/13 11:42
- Visual Basic(VBA) エクセルVBA Workbook変数に変数を使ったファイル名を格納したい 5 2023/06/13 14:46
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
VBAでCSVファイルが使用中かどうかの確認
Visual Basic(VBA)
-
ExcelのVBA。public変数の値が消える
Visual Basic(VBA)
-
コピーしたファイルのマクロを実行すると前のファイルが開く
Access(アクセス)
-
-
4
EXCEL VBA 指定したファイルが存在しない場合メッセージボックスを表示させる
Access(アクセス)
-
5
VBAマクロ実行時エラーの修正について
Visual Basic(VBA)
-
6
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
7
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
8
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
9
On ErrorでエラーNoが0
Visual Basic(VBA)
-
10
【VBAユーザーフォームで閉じるボタンを表示したくない】
Visual Basic(VBA)
-
11
ファイルが見つからない時、スルーしたい。
Visual Basic(VBA)
-
12
VBAで別モジュールへの変数の受け渡し方法
Visual Basic(VBA)
-
13
VBAでCSVの1行目だけを書き換える方法
Excel(エクセル)
-
14
Microsoft VBAで2GBを超えるファイルサイズのバイナリデータを読み込みたい。
Visual Basic(VBA)
-
15
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
16
エクセルのCSV読み込みについて
Visual Basic(VBA)
-
17
Rangeメソッドは失敗しました。globalオブジェクトについて
Excel(エクセル)
-
18
実行時エラー 438になった時の対処法を教えて下さい。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
VBAでfunctionを利用しようとし...
-
実行時エラー'-2147467259(8000...
-
String""から型'Double'への変...
-
お助けください!VBAのファイル...
-
ADO 「認証に失敗しました」
-
エクセルVBA 「On Error GoTo...
-
エクセルVBAで#N/Aのようなエ...
-
SQLでエラーです。
-
インポート時のエラー「データ...
-
実行時エラー 438 の解決策をお...
-
Excel実行時エラー[80004005]に...
-
数式は残し値をクリアするマク...
-
マクロの「SaveAs」でエラーが...
-
「実行時エラー '3167' レコー...
-
日付書式のString型からData型...
-
Filter関数を用いた結果、何も...
-
VBSCRIPTで返されるErr.Number...
-
VBAで時間(00:00形式)を積算...
-
VBAで変数を含むSQL文を使用し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
String""から型'Double'への変...
-
On ErrorでエラーNoが0
-
VBAでfunctionを利用しようとし...
-
マクロで"#N/A"のエラー行を削...
-
VBA データ(特定値)のある最...
-
実行時エラー 438 の解決策をお...
-
お助けください!VBAのファイル...
-
文字列内で括弧を使うには
-
エクセルVBA 「On Error GoTo...
-
【VBA】ワークブックを開く時に...
-
マクロの「SaveAs」でエラーが...
-
ACCESSで値を代入できないとは?
-
実行時エラー'-2147467259(8000...
-
インポート時のエラー「データ...
-
【VB.NET】 パワポ操作を非表示で
-
Filter関数を用いた結果、何も...
-
UBoundに配列がありませんとエ...
-
Excel vbaについての質問
-
メールの件名のセットでエラー...
おすすめ情報