使用 VBA 将 csv 文件导入 MSAccess

问题描述 投票:0回答:1

我有一个 csv 文件需要导入到 MS Access 中。我正在使用 VBA。我正在使用的特定脚本行是

DoCmd.TransferText acImportDelim, , "csvImport", sFileOut, False

文件导入,但缺少部分字段数据。导入过程似乎将 1-20-0032 转换为 1/20/0032,将 1-23-WRTY 转换为 NULL。

举个简单的例子,如果我的 csv 文件包含以下内容...

A, 1-20-0032, 2-101, 03/12/2023, 03/17/2023, 10, 439.9 A, 1-23-WRTY, 50-200, 03/12/2023, 03/17/2023, 16, 852

它像这样进入桌子......

一个| 0032 年 1 月 20 日 | 2-101 | 2023 年 3 月 12 日 | 2023 年 3 月 17 日 | 10 | 439.9 | 一个| | 2-101 | 2023 年 3 月 12 日 | 2023 年 3 月 17 日 | 10 | 439.9 |

除值 1-23-WRTY 外,一切正常

我已经解决了 1-23-0032 导入为 1/20/0032 的问题,方法是在导入完成后将该列中的值的“/”更新为“-”。但是,我不知道如何解决未导入的值。

任何帮助将不胜感激!!

如果我手动导入 csv 文件,我可以获得要通过的值。 但是,用户需要能够单击按钮来导入文件。所以那是行不通的。 我曾尝试使用 VBA 导入到通过手动过程创建的同一个表中。不起作用。即使该字段设置为短文本,它也会将该列带入 / 而不是 - 并删除以字母结尾的字段数据。 (它似乎总是认为该字段是一个日期。在导入规范中我指出日期标识符是 /。但是,在导入时它仍然替换 - 为 /

vba csv ms-access import ms-access-2016
1个回答
0
投票

DoCmd.TransferText 尝试从前 n 行中确定最佳数据类型。

列被读取为日期,当“日期”无效时,它导入空值。

尝试将文件 schema.ini 放在要导入的 txt 文件所在的同一文件夹中,并放置此选项


[NAME_OFF_THE_FILE_TO_IMPORT.txt]

ColNameHeader=真

格式=CSVDelimited

MaxScanRows=0

字符集=ANSI


MaxScanRows=0 将强制 DoCmd.TransferText 读取所有文件以确定最佳数据类型

© www.soinside.com 2019 - 2024. All rights reserved.