いつもお世話になっております。
処理の流れ
VBAで、ファイルを複数開いて処理をするとします。
実行ファイル(VBAが入っている)
A.xlsファイル
B.xlsファイル
C.xlsファイル
そして、事情がありA.xlsファイルだけ処理の途中でファイルを閉じてメモリを開放しています。
しかし、例えば処理の途中でトラブルがあったりした場合はエラー処理に飛ぶようになっています。
現在の状況
もし処理の途中でトラブルがありエラー処理に飛んだ場合でも、
処理の最後にすべてのファイルを閉じてメモリを開放するコードを入れています。
しかし、例えばA.xlsファイルを閉じた後にトラブルがあってエラー処理に飛んだ場合
A.xlsファイルを閉じてメモリを開放するコードでエラーが発生してしまいます。
具体的なエラー発生箇所
VBA
1 'A.xlsファイルのクローズ(A.xls=SendFile) 2 '訳あって処理の途中で閉じる処理を入れている 3 SendFile.Close SaveChanges:=True 4 5 6 7 8'エラー発生時の処理 9 10 'A.xlsファイルのクローズ 11 If SendFile.Name <> "" Then 12 SendFile.Close SaveChanges:=True 13 End If 14 15 'エラーメッセージ 16 MsgBox "Capability Building (" & strError & ") の処理でエラーが発生しました。" & _ 17 vbCrLf & "エラー番号: " & Err.Number & _ 18 vbCrLf & "エラー内容: " & Err.Description 19 20End Sub
上記の部分では、処理の途中でA.xlsファイルを閉じているので
その後にエラーが発生した場合、エラー処理の時に
'A.xlsファイルのクローズ If SendFile.Name <> "" Then SendFile.Close SaveChanges:=True End If
この部分でエラーが発生します。
すでにA.xls(=SendFile.Name)が閉じられているのが原因のようです。
困っていること
この場合、
①ファイルが開いてるかどうかを判断
②もし開いていれば閉じる
というふうに判断すれば良いと思うのですが、それらしいコードが見つかりません。
ファイルが開いているかを判断するコードってあるのでしょうか?
よろしくお願いいたします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。