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;")
注意:路径必须是绝对路径,若数据库有密码需补充密码参数。
- 针对.mdb格式:
验证数据库完整性
手动打开目标Access数据库,确认文件未损坏。若Access提示修复,完成修复后再运行代码。匹配Office位数
若使用64位Excel,需确保Access驱动为64位版本;或切换至32位Office,避免位数不匹配导致驱动识别失败。优化Recordset打开方式
原代码中dbOpenTable仅适用于本地Access表,改用dbOpenDynaset兼容性更强:Set rs = db.OpenRecordset("TargetTableName", dbOpenDynaset)
内容的提问来源于stack exchange,提问作者Justin Joseph
相关产品推荐
相关产品推荐

