Pocket

AccessにCSVファイルからデータをインポートする場合、1つのフィールド255文字以上のデータが含まれていると、そこで切れてしまうと問題があります。これを回避するには、インポート定義を作成して、データ型で「メモ型」を指定してやる必要があります。

Access2002での話なので、最近のんはこんな事しなくてもいいかもしれません。

インポートの仕方

とりあえず、ファイルメニューや右クリックメニューでインポートを実行して、テキストインポートウィザードでインポート処理をします。この時に、「設定」を開いて、テキストが長そうで、255文字を超えそうなフィールドに対して「メモ型」を指定します。デフォルトでは、「テキスト型」が指定されています。

Accessインポート定義

全部設定し終わったら、「保存」をクリックして、定義内容を保存しておきます。定義名は、2回目移行のインポート、マクロやVBAからのインポートに必要です。どっかに名前をコピーしときます。

Access インポート定義の保存

後は、どんどん進んで完了してインポートします。ちゃんと入ってなかったら、どっかでメモ型指定を忘れてるので、やり直してください。

マクロからの実行

CSVのインポートが一回で終わることはないと思うので、多分、自動化すると思います。マクロからやる場合は、アクションに「テキスト変換」、定義名に「ItemM インポート定義」などのさっき保存した定義名を指定します。

Access テキスト変換

VBAから実行

VBAからの場合は、DoCmd.TransferTextを使います。

2番めの引数にさっきの定義名を入れればOK。ちなみに、最後の「65001」はUTF-8で入力したい場合に指定します。

おまけ

実は、こんなことしなくてもやる方法も無くはないです。

フィールドが長くなりそうな奴は、CSVファイルの最初のレコードに、長いデータを入れとけば、Accessが勝手にメモ型にしてくれます。ダミーで入れといてあとで除去するばOK。どっちが手間かという問題ですが・・・

お知り合いに、紹介してもらえませんか?

いつも、読んでいただきありがとうございます。もしこの内容に価値があると思われたら、お知り合いにも紹介してもらえると、とても嬉しいです!

Pocket