Microsoft Access 掲示板

VBAでインポート処理ができたエクセルファイルのみ別フォルダへ移動したい / 13

21 コメント
views
4 フォロー
13
hiroton 2023/01/11 (水) 08:47:43 d204b@f966d >> 9

Err オブジェクト

Err.Numberは「リセット時に0」になります。その後、「エラーの発生がなければ0のまま」です。ただし、エラーが複数回発生した場合は「最後のエラー」情報になっていることに注意が必要です
On Error Resume Nextを使ったエラー対策は、

  1. エラートラップを行う範囲の設定
  2. エラーが発生する可能性のある処理
  3. Errの確認タイミングが適切か
  4. 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

のように、エラートラップ内で処理すればいいでしょう

通報 ...