【Access VBA】「NULLなんてないのにインポートエラー」CSV最終行の落とし穴に注意!

AccessでCSVファイルをインポートした際、「NULL 値が ‘ID’ フィールドには許可されていません」というエラーが出たことはありませんか?
「データはしっかり入ってるのに、なぜ?」と混乱するこの現象。
実は、CSVの最終行に紛れ込んだ“見えない改行”が原因のことがあります。
この記事では、その原因と解決策を図解付きでわかりやすく紹介します。


■ 発生したエラー内容

AccessでCSVをインポート中に、以下のようなエラーが発生しました:


■ エラーテーブルを確認

Accessは自動でERRORテーブルを生成してくれます。
中身を見てみると…

  • IDフィールドが NULL?
  • しかし、テーブル定義では ID フィールドは INT NOT NULL であり、オートナンバー型ではないことも確認済み。
  • コード上の記述も問題なく、原因がわからずしばらく悩むことに…。

■ 結論:CSVの末尾に「余計な改行」があった

原因は、CSVファイルの最終行に空白行(複数の改行)が存在していたことでした。

▼ 例(EmEditorで確認)

"ID","name","birthday"
"100","tanaka","2000/1/1"
← 余計な空行(改行)
← さらに改行

Accessはこの空行も「1レコード」と誤認し、NULLが含まれている行として扱ってしまいます。


■ 解決策:CSVの末尾の空行を削除

CSVファイルを開いて、余分な改行をすべて削除すればインポートエラーは解消されます。

  • EmEditorやVS Codeなどのテキストエディタで行末の「↓」マークをチェック
  • 不要な空白行はすべて削除

■ 対策まとめ

項目 内容
原因 CSVファイルの末尾に余計な改行がある
症状 NULL値が許可されていないフィールドでエラー
対処法 改行を削除して再インポート

■ 予防のためにできること

  • CSV作成元に空行が出ないよう注意する
  • VBAでインポート前に空行をスキップするロジックを入れる
  • インポート処理後、自動的に ImportErrors を確認する仕組みを追加する

■ 検索キーワード

  • Access VBA CSV インポート エラー NULL
  • Access CSV NULL 値 インポートできない
  • Access エラーテーブル 見方
  • Access CSV 最終行 空白 改行 エラー

■ まとめ

CSVインポートエラーは、「見えない文字(改行や空白)」が原因であることが多いです。
特にAccessはファイル末尾の空白行に敏感なので、インポート前に余分な改行のチェックをおすすめします。