AccessでCSVインポート時にエラーが発生する原因と不要な行を取り込まない方法

Microsoft Access

AccessへCSVファイルをインポートした際に「インポートエラー」テーブルが作成され、特定の行だけ取り込めないことがあります。特に基幹システムから出力したCSVでは、集計行やタイトル行など通常のデータとは異なる形式の行が含まれていることがあり、日付型や数値型のフィールドでエラーになるケースがあります。

この記事では、CSV内に「合計」などの文字が含まれる行がある場合にAccessでどのように処理するか、元ファイルを変更せずにインポート時のエラーを防ぐ方法について解説します。

AccessでCSVインポートエラーが発生する主な原因

Accessのテーブルでは、各フィールドにデータ型が設定されています。例えば日付フィールドには日付として認識できる値、数値フィールドには数字のみを入れる必要があります。

そのため、CSVの日付列に「2026/01/01」のような日付ではなく「合計」という文字が入った行が存在すると、Accessはその値を日付として変換できず、インポートエラーとして処理します。

このような行は、基幹システムが帳票形式でCSVを出力している場合によく発生します。人間が見る資料としては便利ですが、データベースへ取り込む場合には不要な集計行になることがあります。

Accessの標準インポート機能だけで特定行を除外できるか

Accessの通常のCSVインポート画面には、「特定の文字が入った行だけ除外する」といった条件設定はありません。

インポートウィザードでは、区切り文字やフィールド形式、先頭行を見出しとして扱う設定などはできますが、日付列に「合計」が入っている行だけを自動的に除外するフィルター機能は用意されていません。

そのため、単純にCSVを取り込むだけでは、問題の行を避けることは難しく、別の方法を利用する必要があります。

方法1:一度作業用テーブルへ取り込んでから不要な行を削除する

最も安全な方法は、CSVを直接本番テーブルへ入れず、一時的なインポート用テーブルへ取り込む方法です。

例えば日付フィールドを文字列型として持つ作業用テーブルを作成し、そこへCSVをインポートします。その後、「日付列が合計ではないデータだけ」を抽出して、本来のテーブルへ追加します。

具体的には以下のような流れになります。

  1. CSVを作業用テーブルへインポートする
  2. 日付列が「合計」のレコードを除外するクエリを作成する
  3. 正常なデータだけを本番テーブルへ追加する

この方法なら元のCSVファイルを変更する必要がなく、基幹システムから取得したファイルをそのまま利用できます。

方法2:Access VBAでインポート前に不要行を判定する

定期的に同じCSVを取り込む場合は、VBAを使って自動処理する方法が便利です。

VBAでCSVを読み込み、各行の日付列を確認して「合計」という文字が含まれている場合だけスキップする処理を作成できます。

例えば毎月基幹システムからCSVを取得してAccessへ登録する業務では、ボタン1つで「CSV読み込み→不要行除外→データ登録」まで自動化できます。

大量のCSV処理を行う場合は、手作業で削除するよりもVBAによる自動化の方がミスを防ぎやすくなります。

方法3:インポート仕様を利用してデータ型エラーを防ぐ

AccessではCSVインポート時の設定を保存できる「インポート仕様」を利用できます。

ただし、インポート仕様では「合計という文字がある行だけ除外する」という条件までは設定できません。そのため、フィールド型を調整してエラーを減らす用途として利用するのが基本です。

例えば、最初は日付列を文字列として取り込み、後からクエリで正しい日付だけ変換するようにすると、インポートエラーを回避しやすくなります。

エラーを減らすためのAccess CSV取り込み設計

基幹システムから出力されるCSVをAccessで利用する場合、直接本番テーブルへ入れる設計はトラブルの原因になります。

おすすめは「CSV取込用テーブル」「チェック用クエリ」「本番テーブル」という3段階に分ける方法です。

処理段階 役割
CSV取込用テーブル 元データをそのまま受け取る
チェック用クエリ 不要行や異常データを確認する
本番テーブル 正常なデータだけ保存する

この構成にすると、基幹システム側のCSV形式が変更された場合でも原因を確認しやすくなります。

まとめ:CSVの特定行除外は直接インポートではなく中間処理がおすすめ

Accessの標準CSVインポート機能だけでは、「日付列が合計になっている行だけ取り込まない」という細かな条件設定はできません。

元のCSVファイルを変更できない場合は、一度作業用テーブルへ取り込んでから不要な行を除外する方法が最も安全です。

定期的な業務で同じ処理を行う場合は、VBAやクエリを組み合わせて自動化することで、基幹システムのCSVをそのまま利用しながら安定したデータ管理ができます。

コメント

タイトルとURLをコピーしました