AccessにCSVをインポートする方法 文字化けと先頭ゼロの対処

概要

この記事の結論
AccessにCSVを取り込むには、[外部データ]から[テキストファイル]を選び、区切り文字・文字コード・列のデータ型を確認してインポートします。顧客コードや郵便番号は数値ではなく短いテキストにすると先頭ゼロを保持できます。初回は一時テーブルに取り込み、件数やエラーを照合してから本番テーブルへ追加すると、誤取り込みを防ぎやすくなります。

この記事でわかること

  • 文字コードと区切りを確認
  • コード類はテキストで保持
  • 新規と追加を選び分け
  • 取込件数とエラーを照合

この記事の主な内容

  1. CSVを取り込む前に確認すること
  2. 新規テーブルへCSVをインポートする手順
  3. 既存テーブルへ追加する場合の注意
  4. 文字化けや先頭ゼロ消失を直す
  5. 保存した操作と形式定義で再利用する
  6. 本番運用で重複取り込みを防ぐ
  7. よくある質問

想定読了時間:約7分~9分


1 CSVを取り込む前に確認すること

CSVは文字を区切り文字で並べた形式で、Excelのようにセルごとの表示形式を保持しません。顧客コード00123を数値として取り込むと123になります。コード・電話番号・郵便番号は計算する値なのか、文字として識別する値なのかを先に決めます。

確認項目確認する内容
文字コードUTF-8やCP932など受領元の仕様
区切りカンマ、タブなどの区切り文字
引用符値の中のカンマ・改行の囲み方
見出し1行目が項目名か実データか
データ型コード、日付、金額、長い文章

元ファイルは編集前に保管します。Excelで開いて保存し直すと、先頭ゼロや長い数値、日付らしい文字列が変換されることがあります。調査時はテキストエディターでも内容を確認すると、元ファイルの問題と取り込み側の問題を分けやすくなります。

参考:Microsoft テキストファイルのデータをインポートまたはリンクする


2 新規テーブルへCSVをインポートする手順

初めて扱うCSVは、本番テーブルへ直接追加せず一時テーブルへ取り込みます。ここでは「W_受注取込」のような作業用テーブルを作る想定で説明します。実際の名前は既存システムと重複しないものにしてください。

CSVを安全に取り込む4ステップ。ファイルを確認、列の型を指定、一時テーブルへ取込、件数を照合を順に示しています。

1. [外部データ]→[新しいデータソース]→[ファイルから]→[テキストファイル]を開きます。旧画面では[テキストファイル]を直接選びます。

2. CSVを指定し、新しいテーブルへのインポートを選びます。

3. カンマ区切りなら区切り形式を選び、文字コード、区切り文字、引用符、先頭行の項目名を確認します。

4. 新規テーブルの各列を選び、コード類を短いテキスト、日付を日付時刻など、内容に合う型へ設定します。

5. 主キーの扱いと取り込み先名を指定し、実行します。

6. 完了後にエラーテーブルの有無、取り込み件数、代表的な値を確認します。

画面で選べる設定はAccessの版や取り込み方法で変わります。プレビューに見えている先頭行だけでなく、後半のデータにも同じ型で入らない値がないか確認してください。型を推測する機能へ任せきりにしないことが大切です。


3 既存テーブルへ追加する場合の注意

既存テーブルへの追加は、新しい行を増やす処理です。同じ顧客コードがあるからといって、その行を自動で更新する処理にはなりません。キーが重複すればエラーになったり、重複を許す設計では同じ内容が二重に入ったりします。

追加先のフィールド名、型、長さ、必須入力、一意性の条件を調べます。既存テーブルへの追加では、新規テーブル時のように列ごとの型を指定する画面が出ない場合もあります。追加先の設計が基準になるためです。

既存データを更新したい場合は、一時テーブルへ取り込んでキーで照合し、新規分の追加と既存分の更新を分けます。更新対象を選択クエリで先に表示して確認し、いきなり更新クエリを本番へ実行しないようにしましょう。

参考:Microsoft テキストファイルのデータをインポートまたはリンクする


4 文字化けや先頭ゼロ消失を直す

文字化けは、ファイルの文字コードと取り込み設定の不一致を疑います。UTF-8とCP932などの違いを受領元へ確認し、適切な設定で元ファイルから取り込み直します。文字化け後に上書き保存したファイルだけで復旧しようとしないでください。

CSV取り込みの3つの落とし穴。文字化け、先頭ゼロ消失、追加の重複を整理しています。
症状見直すこと
先頭ゼロが消える対象列をテキストで取り込む
型変換エラー日付形式、数値以外の値、桁数
列がずれる区切り、引用符、値内の改行
キー違反重複ID、二重取り込み
一部がNullになる混在した型、空欄、元値

郵便番号0012345のような値を一度数値にすると、何桁が正しいかという別の情報なしには元の形を確定できません。後からゼロを付け足す処理で済ませず、元データを正しい型で取り込み直すのが基本です。

複数テーブルや複数端末への影響が分からない場合は、変更目的と現状の構成を整理してお気軽にご相談ください。


5 保存した操作と形式定義で再利用する

同じ操作を繰り返す場合は、完了後の画面で操作の詳細を保存できます。後日、[外部データ]の[保存済みのインポート操作]から実行する方法です。実行前にはファイルの場所と取り込み先が意図どおりか確認します。

一方、テキストウィザードの[詳細設定]で保存する形式定義は別の仕組みです。VBAのTransferTextで指定するSpecificationNameはこちらの種類を使います。操作完了後に保存した名前を、そのまま同じ引数に入れないようにしてください。

処理名には、対象と目的が分かる名前を付けます。「インポート1」より「受注CSV取込_日次」の方が、配布や障害調査で見分けやすくなります。定義の編集やマクロで候補が出ない場合に関しては関連記事で説明します。
必要に応じてご参照ください。

参考:Microsoft インポートまたはエクスポート操作の詳細を保存する

参考: Microsoft TransferTextメソッド


6 本番運用で重複取り込みを防ぐ

運用では、正常に取り込めたかと、同じファイルを二度取り込んでいないかを確認します。受領ファイル名だけでは再送や同名上書きを識別できない場合があるため、処理IDや対象期間、受領日時を記録します。

  • 受領原本と処理済みファイルを区別して保管する。
  • 取込対象件数、正常件数、エラー件数と理由を残す。
  • 主キーだけでなく業務上の重複条件も確認する。
  • 途中失敗後に再実行しても二重登録しない手順を決める。

CSVに引用符内の改行があると、単純なテキストの行数とレコード数は一致しません。件数照合では、CSVの構造を認識したレコード数を使います。完了メッセージだけに頼らず、業務上の合計値や代表IDも合わせて確認しましょう。


よくある質問(FAQ)

CSVはテキストファイルとして取り込みます。拡張子が.csvでも[テキストファイル]を選びます。

追加を選んだ場合は行の追加です。既存行をキーで自動更新する動作とは異なります。

コード類の列を短いテキストとして扱います。元ファイルの時点でゼロが消えていないかも確認します。

一部エラーがある場合もあります。件数、エラーテーブル、Nullや代表値を確認してください。

CSV取り込みの不具合・自動化の相談が必要な場合

この記事の手順を作業用コピーで確認しても解決しない場合や、業務への影響が大きく自社だけで判断しにくい場合は、お気軽にご相談ください。Accessの現在の構成、発生している症状、変更したい内容をもとに、調査・改修の範囲を整理します。

ご相談時は、Accessの製品名・Build・bit数、エラーの内容、対象ファイルの構成、直前に変えた設定を分かる範囲でお知らせください。機密データやパスワードは公開フォーム等へそのまま記載しないでください。


参考情報

Microsoft テキストファイルのデータをインポートまたはリンクする

Microsoft TransferTextメソッド

Microsoft インポートまたはエクスポート操作の詳細を保存する

TOP