プロが教えるわが家の防犯対策術!

accessにて、顧客情報を管理しています。
販売管理ソフトから顧客情報の一部をexcel(又はCSV)ファイルで出力したのですが、数量の列のデータにダブルクォーテーションが入っており、そのままインポートすると数字として取り込めません。
excelを開いて変換保存。それをaccessでインポートしたのですが、手間がかかって仕方がありません。
毎日出力するので、excelファイルは毎日同じ名前で上書きされてます。
excelファイルのsheet1 Range("j:j")とRange("k:k")のダブルクォーテーションを抜いて、テーブル"ta発注書"にインポートするコードを教えて頂けないでしょうか。
何卒、宜しくお願い致します。

A 回答 (2件)

試してみましたか!????



下記のようなCSVファイルをダブルクリックで
Excelが読み取ると
"りんご",1,150,150,"1-1-1"
"バナナ",10,200,"2,000","001"
"メロン","1,000","2,000","2,000,000","1e2"

りんご|1,150|150|2001/1/1
バナナ|10,200|2,000|1
メロン|1,000|2,000|2,000,000|1.00E+02
となります。
最後の列が曲者です。
年月日、前ゼロ無し、指数表示に変換されてしまっています。
Excelは数値型や日付時刻型に変換できるものはトコトン変換してくれます。

なのでCSV→Excel変換→Accessでインポートは悪手。
Excelファイル、またはCSVファイルを直接インポートするのが吉。
ただ通常のインポートの際にはAccessはデータをある程度空読みして
データ型を決定します。
期待してたデータ型にならない可能性があります。
空読み行数はレジストリのTypeGuessRowsやMaxScanRowsで変更可。
ならば、あなたがインポートウィザードでデータ型の指定を行い
ついでにインポートするフィールド(列)を指定するのが確実です。
次回からはインポート定義を使用すれば数クリックで終わります。
VBAには、
Docmd.RunSavedImportExport(SavedImportExportName) ’※注 確認なしに上書きされます
がありますのでこれを使用しても良いかも。

さらに蛇足ですが大昔にこんな回答をしてました。
『カンマ区切りのCSVファイルから""を削除したい』
https://oshiete.goo.ne.jp/qa/7721044.html
私からは以上です。
    • good
    • 0
この回答へのお礼

大変失礼いたしました。少々多忙過ぎた事もあり早々に判断ミスをしていました。ご丁寧に回答頂いたにも関わらず、大変申し訳ございませんでした。
お陰様で解決致しました。ありがとうございました。

お礼日時:2021/12/17 18:16

まず最初にAccessのインポートウィザードでExcelファイルのインポートを進めてゆきます。


(リボンの外部データからExcelを選択)。
この過程で各列のデータ型の指定とどの列をインポートするのかを指定します。
指定し終えたら『完了』をクリックすると、[インポート操作の保存]の確認が出ますので
適当な名前で保存します。
次回からはデータタブにある[保存済みのインポート操作]から[実行]を行えば
面倒な手順は省けます。
これが簡単で確実な方法かと思います。

インポート定義を確認するには?
https://tsware.jp/tips/tips_528.htm

保存済みのインポート/エクスポートを再実行するには?
https://tsware.jp/tips/tips_506.htm
    • good
    • 0
この回答へのお礼

ご連絡が遅くなり申し訳ございません。
Excelファイルの内部データでJ列とK列に含まれているダブルクォーテーションを抜いてからインポートしたいのですが可能でしょうか?
宜しくお願い致します。

お礼日時:2021/12/15 19:25

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A