You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将TXT文件以文本类型导入Microsoft Access而非数值类型

解决Access导入固定长度TXT时自动识别为数值的问题

针对你遇到的固定长度TXT导入时被误识别为数值的问题,提供三个可靠的自动化解决方案:

方案1:用Schema.ini强制字段类型

Access的Jet驱动会根据文件前几行自动判断字段类型,通过Schema.ini可以强制指定文本类型,彻底规避自动识别错误:

  1. 在sourcefile.txt的同目录下创建Schema.ini文件,写入以下内容:
[sourcefile.txt]
ColNameHeader=False
Format=FixedLength
Col1=swd Text Width 32
  1. 用VBA执行导入:
DoCmd.TransferText acImportFixed, , "T_RAW_SWD", "C:\你的文件路径\sourcefile.txt", False

Schema.ini会明确告诉驱动:该文件为固定长度格式,唯一列swd是长度32的文本类型,不会再触发数值识别逻辑。

方案2:复用手动导入规格

既然手动向导能成功,直接保存导入规格并在VBA中调用:

  1. 打开Access导入向导,选择sourcefile.txt,设置为固定长度格式,将唯一字段指定为文本类型(长度32),完成导入时选择「保存导入步骤」,记住规格名称(比如Fixed32TextSpec)。
  2. VBA调用该规格:
DoCmd.TransferText acImportFixed, "Fixed32TextSpec", "T_RAW_SWD", "C:\你的文件路径\sourcefile.txt", False

这种方法完全复用手动验证过的正确配置,避免驱动自动判断的不确定性。

方案3:VBA逐行读取写入表

如果前两种方法仍有问题,直接绕开Access的导入驱动,手动控制数据写入:

Sub ImportFixedLengthText()
    Dim fso As Object, txtFile As Object
    Dim lineText As String
    Dim db As DAO.Database, rs As DAO.Recordset
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set txtFile = fso.OpenTextFile("C:\你的文件路径\sourcefile.txt", 1) '1=只读模式
    Set db = CurrentDb
    Set rs = db.OpenRecordset("T_RAW_SWD", dbOpenDynaset)
    
    Do While Not txtFile.AtEndOfStream
        lineText = txtFile.ReadLine
        lineText = Left(lineText, 32) '确保截取固定32字符,过滤换行符干扰
        rs.AddNew
        rs!swd = lineText
        rs.Update
    Loop
    
    '清理对象
    rs.Close: txtFile.Close
    Set rs = Nothing: Set txtFile = Nothing: Set fso = Nothing: Set db = Nothing
End Sub

这个方法直接读取每行文本并写入字段,完全控制数据类型,8万行数据的处理速度在Access中完全可接受。

内容的提问来源于stack exchange,提问作者Foxfire And Burns And Burns

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 11:57:18