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

MS Access VBA:编程链接文本文件时数据库引擎报错

解决Access编程链接文本文件的独占访问错误

先看你代码里的几个核心问题:

  • 连接字符串里的Link Specification是手动创建链接时生成的专属标识,编程链接时完全不需要,反而会导致引擎识别异常。
  • ACCDB=YES是针对Access数据库的参数,文本文件不需要这个,直接删掉。
  • TABLE=Results_File#txt写法错误,#属于无效字符,而且文件名应该通过SourceTableName指定,不是塞进连接字符串里。
  • 编程链接前最好先删除已存在的同名链接表,避免重复链接引发冲突。

修正后的代码示例:

Dim fso As Object
Dim FileLocation As String
Dim tsfilename As String
Dim db As DAO.Database
Dim td As DAO.TableDef

Set fso = CreateObject("Scripting.FileSystemObject")
FileLocation = "C:\Results\Results_File.txt" ' 替换为你的文本文件完整路径
tsfilename = "Results_File" ' 自定义链接表的名称,可与文件名不同

Set db = CurrentDb

' 先清理已存在的同名链接表
On Error Resume Next
db.TableDefs.Delete tsfilename
On Error GoTo 0

If fso.FileExists(FileLocation) Then
    Set td = db.CreateTableDef(tsfilename)
    ' 仅保留文本链接必要参数,动态获取文件夹路径
    td.Connect = "Text;FMT=Delimited;HDR=NO;IMEX=2;CharacterSet=437;DATABASE=" & fso.GetParentFolderName(FileLocation)
    ' SourceTableName指定文本文件的文件名(不含路径)
    td.SourceTableName = fso.GetFileName(FileLocation)
    db.TableDefs.Append td
    db.TableDefs.Refresh
End If

Set td = Nothing
Set db = Nothing
Set fso = Nothing

额外注意点:

  • IMEX=2设置为只读模式,避免尝试写入文本文件引发权限问题,适配你仅读取的需求。
  • 用fso的方法动态获取路径和文件名,能自动适配不同部署位置的文件路径,不用硬编码。
  • 如果还是出现独占错误,可以检查外部程序更新文本文件时是否有锁定行为(不过你手动链接正常,大概率是连接字符串的问题)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 06:32:33