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

Excel VBA写入Access报Run Time Error 3343:无法识别数据库格式

解决VBA写入Access时的Run Time Error 3343错误

尝试用以下VBA代码将Excel数据写入Access数据库,但无论选择何种文件路径,均触发Run Time Error 3343错误,提示无法识别数据库格式。已尝试将目标数据库改为.mdb格式,问题仍未解决。

用户提供的VBA代码:

Sub Export1line()

    Application.ScreenUpdating = False

    Dim db As Database
    Dim rs As DAO.Recordset
    
    Set db = OpenDatabase("FilePath")
    Set rs = db.OpenRecordset("TargetTableName", dbOpenTable)

    rs.AddNew
    rs.Fields("Column1") = Worksheets("To Export").Range("A2").Value
    rs.Fields("Column2") = Worksheets("To Export").Range("B2").Value
    rs.Fields("Column3") = Worksheets("To Export").Range("C2").Value
    rs.Fields("Column4") = Worksheets("To Export").Range("D2").Value
    rs.Fields("Column5") = Worksheets("To Export").Range("E2").Value
    rs.Fields("Column6") = Worksheets("To Export").Range("F2").Value
    
    rs.Update

    rs.Close
    db.Close

    Application.ScreenUpdating = True

End Sub

解决方案

  • 检查DAO引用版本
    打开VBA编辑器(Alt+F11),点击「工具」→「引用」,确保勾选Microsoft DAO 3.6 Object Library(32位Office)或对应64位版本的DAO库。不要同时勾选ADO和DAO库,避免对象冲突。

  • 使用完整路径与明确连接参数
    OpenDatabase方法需指定绝对路径,且不同格式数据库需匹配对应参数。替换原代码中Set db = OpenDatabase("FilePath"):

    • 针对.mdb格式:
      Set db = OpenDatabase("C:\Your\Full\Path\Database.mdb", False, False, ";PWD=YourPassword")
      
    • 针对.accdb格式(需DAO 12.0+支持):
      Set db = OpenDatabase("C:\Your\Full\Path\Database.accdb", False, False, "MS Access;")
      

    注意:路径必须是绝对路径,若数据库有密码需补充密码参数。

  • 验证数据库完整性
    手动打开目标Access数据库,确认文件未损坏。若Access提示修复,完成修复后再运行代码。

  • 匹配Office位数
    若使用64位Excel,需确保Access驱动为64位版本;或切换至32位Office,避免位数不匹配导致驱动识别失败。

  • 优化Recordset打开方式
    原代码中dbOpenTable仅适用于本地Access表,改用dbOpenDynaset兼容性更强:

    Set rs = db.OpenRecordset("TargetTableName", dbOpenDynaset)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 16:02:37