Err.Number
は「リセット時に0」になります。その後、「エラーの発生がなければ0のまま」です。ただし、エラーが複数回発生した場合は「最後のエラー」情報になっていることに注意が必要です
On Error Resume Next
を使ったエラー対策は、
- エラートラップを行う範囲の設定
- エラーが発生する可能性のある処理
- Errの確認タイミングが適切か
- Errの適切なリセット
これらをしっかりと把握している必要があるということです。提示したコードはサンプルの為、できるかぎりエラートラップに焦点を絞って記述しています
On Error Resume Next '//エラートラップ開始(Errリセット)
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, tblname, dname & fname, True, sname
インポート成功 = Err.Number = 0 '//エラー判定
On Error Goto 0 '//エラートラップ終了
エラーの結果を変数(インポート成功
)に取っているのもエラートラップに焦点を絞るためで、適切に処理できているならば
On Error Resume Next
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, tblname, dname & fname, True, sname
If Err Then
'//エラー発生時の処理
Else
'//エラーがなかった時の処理
End If
On Error Goto 0
のように、エラートラップ内で処理すればいいでしょう
通報 ...