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はファイル末尾の空白行に敏感なので、インポート前に余分な改行のチェックをおすすめします。