如何解决访问 VBA DoCmd.TransferText CSV 导入 - 错误数据类型检测删除必要的字符串信息
使用 DoCmd.TransferText TransferType:=acLinkDelim
通过 VBA 将 CSV 文件导入 Access 中,效果很好,但是我在 CSV 文件中有一个必填字段,其中包含诸如“2024061.023.1733.1937”之类的值,我想将其导入为 Short文本,但它自动导入为货币。因此,它会在第一个“.”之后丢弃所有内容。部分并在表中显示 $2,024,061.023。
我试图找到答案并找到了一些方法,例如将数据传输到已将字段设置为我开始实施的短文本的新表,但是从最初导入的数据中,主要的必填字段已经丢失了我需要的字符串的“.1733.1937”部分。
想知道是否有人可以解决这个问题。
Dim db As DAO.Database
Set db = CurrentDb
On Error Resume Next: db.TableDefs.Delete "tblImport": On Error GoTo Err_Field_Import
db.TableDefs.Refresh
DoCmd.TransferText TransferType:=acLinkDelim,TableName:="tblImport",_
FileName:="results.csv",HasFieldNames:=True
db.TableDefs.Refresh
对于我的测试,results.csv 如下所示,但最终它将包含大约 72 列各种数据类型,这个项目字段是最重要的。
Project
20245061.023.1733.1937
编辑:手动链接是可能的,但让 VBA 通过单击表单中的按钮来完成此操作,以填写某些表单信息可为非精通技术的用户简化流程。这种导入也将每天或每天多次发生,因此让 VBA 执行它对他们来说更容易。
解决方法
据我所知,无法使用 DoCmd.TransferText
定义字段数据类型。我从一个单独的来源获得的数据可以选择导出为 CSV 或 Excel,所以我最终尝试了 Excel 导出选项,然后通过 DoCmd.TransferSpreadsheet
导入访问,它工作得很好,因为它使用了数据类型excel字段。所以这就是我要采用的解决方案。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。