Microsoft Access 掲示板

CSVファイルを加工すると日付データの形式が変わる

7 コメント
views
4 フォロー

お世話になります。

標題の件で相談させてください。

AccessからCSVファイルを取り込む(Docmd.TransferText)際、
前加工として、不要な列を削除して上書き保存してから取り込もうとしています。
※オートメーションにより、最終列目から1列目までループ処理をして、削除対象列かどうかを判断して列削除

ところが、この加工により日付型のデータが、加工前はyyyy/m/dの形式だったものが、保存後はm/d/yyyyの形式に変ってしまいます。

もとの形式で取り込むよい方法をご教授ください。
よろしくお願いいたします。

美月
作成: 2019/03/29 (金) 14:40:56
通報 ...
1

前加工として、不要な列を削除して上書き保存してから取り込もうとしています。
※オートメーションにより、最終列目から1列目までループ処理をして、削除対象列かどうかを判断して列削除

テキストファイルに対してオートメーションってできました?ちょっとどのようにしているのか分かりません。

csvファイルの列構成が固定で、削除する列も固定なら、まずは手動でインポートして、そのときに、データ型を設定したり、インポートしない列を設定できますので、その設定をして、インポート定義として保存します。

その後、Docmd.TransferText の引数でインポート定義名を指定してインポートすればいいかと思います。

2
美月 2019/03/30 (土) 12:22:03 a63a9@10d06

ありがとうございます。

おっしゃる通り、元になるファイルから必要ない列のみ残したものを、実際にインポートしてテーブル定義を作成しました。

元のファイルは列数が250以上ありまして、インポートの定義でインポートするしないを設定するのは大変かなと思ってしまいまた。実際に使う列は250のうち10程度です。

データも、一月4万件のデータを12ヶ月分洗い替えでインポートしなければならないため、事前に加工しようと考えました。

そのようにやっているのですが、日付データの形式が変わってしまいます。

3

取り込む10のフィールドは決まっているのですよね。
ならば、一度だけ手動でインポート定義を作成して保存しておけば、後はそれを使って Docmd.TransferText すればいいでしょう。インポート定義では、インポートする/しないの選択、データ型の指定もできますので、日付/時刻型に設定しておけばいいでしょう。
日付/時刻型なら、書式設定で、yyyy/m/d でも、和暦表示でも、お好みの表示にすることができます。

4
美月 2019/04/08 (月) 21:08:32 5ec36@d6973

すみません、業務が立て込んでおり確認とご報告が遅くなってしまいました。

一度だけ手動でインポート定義を作成して保存しました。
インポート定義の名前:"CSVインポート"

この定義を使って下記のようにインポートできるのでしょうか?
strTblName:ここは固定のテーブル
strCSVFilePath:インポートするファイル名は変数で与えるため可変です

DoCmd.TransferText acImportDelim, "CSVインポート", strTblName, strCSVFilePath, True

何度かトライしましたが、エラーが出てうまくインポートできませんでした。

5
美月 2019/04/08 (月) 21:15:18 5ec36@d6973

すみません、追記です。
strTblNameのテーブル定義は、必要な10のフィールドに絞っものを使っています。

6

どのようなエラーがでますか。エラーメッセージを提示してください。

また、同じデータ、同じ追加先テーブルで、手動で保存済みインポート定義を使ってインポートできるかも確認してください。

7
美月 2019/04/10 (水) 07:50:30 a63a9@7b5ca

失礼いたしました。
手順のミスでした。

アドバイスいただいた通りに動作いたしました。