エクセルVBAで、あるACCESSファイルに接続しテーブル内容を編集し、また、別のエクセルファイルの内容も自ファイルに取り込むプロシージャを作成しています。このプロシージャのエラー発生時の動作をどう書けばいいのか困っています。
Public Sub ExRead() On Error GoTo Err Dim ReadBook As Workbook, exf As String, acf As String Dim rdst As Worksheet Dim con As New ADODB.Connection Dim conStr As String exf = 読込対象のエクセルファイルのパス Set myst = ThisWorkbook.Worksheets("読込情報") Set ReadBook = Workbooks.Open(exf) Set rdst = ReadBook.Worksheets("読み取らせ情報") (略)読み込んで自ファイル内シートに取り込み Set rdst = Nothing ReadBook.Close acf = 接続対象のアクセスファイルのパス conStr = "Provider =Microsoft.ACE.OLEDB.12.0;Data Source = " & acf con.Open (conStr) Dim rs As New ADODB.Recordset rs.Open "tbl1", con, adopenkeyset, adlockoptimistic (略)Accessのテーブルを編集するコード Set rs = Nothing con.Close Exit Sub Err: Set rdst = Nothing ReadBook.Close Set rs = Nothing con.Close MsgBox Err.Description End Sub
このようなコードなんですが、この、Err:部分を適切な形にしたいです。
というのも、実行中、どの段階でエラーが発生するのかわからないのですが、もし読込対象エクセルファイルが開いたままだったり、アクセスファイルとつながった状態だとまずいので、エラー発生だとしても、ちゃんと閉じてから終了したいです。
おそらく、「もしReadbookが開いていたら」とか「もしconが接続中なら」という条件を書けばいいのでしょうが、どう書いていいのかわかりません。
よろしくお願いします。

回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/03/16 07:29
2018/03/16 08:17
2018/03/16 21:21