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

Access中DoCmd.TransferText导出失败:引擎找不到对象

解决Access导出TXT时"找不到对象"的错误

看起来你遇到的问题根源出在文件名包含非法特殊字符,以及导出逻辑的小疏漏上,咱们一步步拆解解决:

错误原因分析

报错里的'Tk2020181903#txt.'暴露了两个核心问题:

  1. 文件名里出现了#号——Windows系统不允许文件名使用#这类特殊字符,同时Access会把#识别为对象引用的分隔符(比如查询里的[字段#1]),所以它误以为你要操作一个叫Tk2020181903#txt的数据库对象,而不是导出到这个文件名的文件。
  2. 后缀拼接错误:你应该用.来连接文件名和.txt后缀,而不是#。

另外你的日期格式yyyyddmm可能也不符合常规命名习惯(会生成类似20241805这样的字符串,日在前月在后),如果是想按年-月-日的顺序命名,建议改成yyyyMMdd。

修正后的代码示例

我把你的代码调整成更规范、无错误的版本:

' 生成合规的文件名:前缀+yyyyMMdd格式的日期,无特殊字符
TempName01 = "Tk20" & Format(Date, "yyyyMMdd")
ExportPath = DLookup("Export_Path", "OmniDB_system01")

' 使用With块简化FileDialog操作,避免重复调用
With Application.FileDialog(msoFileDialogSaveAs)
    .Title = "Export Tk20 File7 (Testing)"
    ' 拼接完整的初始文件名:导出路径+合规文件名+.txt后缀
    .InitialFileName = ExportPath & "\" & TempName01 & ".txt"
    ' 添加文件过滤器,确保用户只能选择TXT格式
    .Filter = "Text Files (*.txt)|*.txt"
    
    ' 如果用户选择了保存路径,执行导出
    If .Show = -1 Then
        DoCmd.TransferText acExportDelim, , "Tk20F7_agg", .SelectedItems(1), True
    End If
End With

关键注意事项

  • 禁用非法文件名字符:永远不要在文件名里用<, >, :, ", /, \, |, ?, *, #这些字符,Windows和Access都会对这些字符产生误解。
  • 规范日期格式:用yyyyMMdd(年-月-日)比yyyyddmm更直观,避免后续自己或其他开发者混淆日期顺序。
  • 用With块优化代码:重复调用Application.FileDialog既冗余又容易出错,用With块能让代码更清晰易维护。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:22:31