Access 2007でCSVファイルをリンクテーブルとして利用する際、列のデータ型が自動判別され、意図しない型になることがあります。本記事では、短いテキストを固定型としてリンクする方法や、自動判別を回避する方法を解説します。
CSVリンク時の型自動判別の仕組み
Accessでは、CSVをリンクするときに最初の数行(通常8行)をサンプリングして各列のデータ型を推測します。
これにより、意図しない列が長いテキスト(Memo型)として扱われることがあります。
毎月更新されるCSVでも同じ現象が起こるため、型の一致が必要なクエリで問題が発生します。
型を固定するための対策
リンクテーブルの型を固定するには、以下の方法があります。
- CSVの最初の行にダミーデータを挿入して、Accessに正しい型を認識させる
- ODBC接続やExcel経由でリンクし、データ型を明示的に指定する
- VBAを使用してリンク作業を自動化し、型を指定する
例えば、VBAでDoCmd.TransferTextを使う場合、仕様ファイル(Import Specification)で列ごとの型を定義できます。これにより、毎月CSVが更新されても型が固定されます。
Import Specificationの作成手順
AccessでCSVを一度インポートし、[テキストファイルインポートウィザード]で列ごとの型を設定し、[仕様を保存]します。
保存した仕様ファイルはTransferTextで利用可能です。
こうすることで、自動判別による型の変更を回避でき、リンクテーブルとして利用できます。
リンクテーブルの更新方法
毎月のCSV更新時には、既存のリンクテーブルを削除せず、VBAで仕様ファイルを指定して再リンクします。
これにより、型を固定したまま新しいデータを取り込めます。
まとめ
Access 2007でCSVリンクテーブルの型を固定するには、Import Specificationを利用し、VBAで自動更新を行う方法が有効です。
ダミーデータの追加やODBC経由のリンクも検討できます。これにより、毎月更新されるCSVでも型の不一致によるクエリの問題を回避できます。


コメント