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

从TXT文件创建的VBA Recordset返回Null值(Excel 2013)

解决ADODB.Recordset读取Tab分隔TXT返回Null值的问题

我来帮你拆解这个问题的排查过程和最终解决方案:

首先,你的代码逻辑和配置其实是没问题的:

  • 连接字符串使用Microsoft.Jet.OLEDB.4.0驱动,配置了正确的数据源路径和文本扩展属性(text;HDR=No;FMT=Delimited)
  • schema.ini也正确指定了b.txt的格式为Tab分隔、无表头,并且设置MaxScanRows=0确保驱动扫描所有行来识别字段类型
  • 设置CursorLocation=3(adUseClient)让RecordCount能返回正确的记录数,这部分也确实生效了

那为什么会出现记录数正确但所有字段值都是Null的情况呢?结合你最后更新的结论,核心问题出在原始TXT文件本身的损坏上,常见的这类损坏包括:

  • 文件中存在不可见的控制字符(比如ASCII控制码),导致驱动解析字段内容时失败
  • 换行符格式异常(比如混用了LF和CRLF,或者使用了非标准换行符)
  • 文件编码不兼容(比如UTF-8带BOM,而Jet OLEDB 4.0默认优先识别ANSI编码)
  • 磁盘存储导致的文件内容部分损坏

额外排查小技巧(给遇到类似问题的开发者)

如果下次再碰到这类情况,可以按以下步骤排查:

  • 用记事本打开TXT文件,开启「显示所有字符」(视图→显示符号→显示所有字符),检查是否有异常的制表符、换行符或特殊字符
  • 尝试将TXT文件另存为ANSI编码(如果原本是UTF-8格式),Jet驱动对ANSI编码的文本文件兼容性更好
  • 先创建一个极简的测试TXT文件(比如你重新录入的那几行),确认驱动能正常解析后,再逐步替换成原文件的内容,定位损坏的具体部分

内容的提问来源于stack exchange,提问作者Maria Marienko

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 10:05:08