如何用64位Excel读取Access 97版本的.mdb文件?
解决64位Excel VBA读取Access 97 .mdb文件的问题
方法1:调整ACE OLEDB连接字符串,添加兼容参数
ACE OLEDB 12.0/16.0驱动原生支持读取Access 97格式,但需在连接字符串中明确指定兼容旧版本的数据库引擎类型。修改后的连接字符串需加入Extended Properties="Jet OLEDB:Database Engine Type=4;",以此触发驱动对Jet 3.5格式(Access 97对应格式)的兼容支持。
VBA代码示例:
Sub ConnectToAccess97() Dim conn As Object Dim rs As Object Dim dbPath As String dbPath = "C:\Your\File\Path\YourDB.mdb" '替换为实际.mdb文件路径 Set conn = CreateObject("ADODB.Connection") '带兼容参数的连接字符串,若数据库有密码,追加;Jet OLEDB:Database Password=你的密码; conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & dbPath & _ ";Extended Properties=""Jet OLEDB:Database Engine Type=4;""" '测试读取数据,替换为你的目标表名 Set rs = conn.Execute("SELECT * FROM YourTableName") Do While Not rs.EOF Debug.Print rs.Fields(0).Value '输出首字段内容到立即窗口 rs.MoveNext Loop '释放资源 rs.Close conn.Close Set rs = Nothing Set conn = Nothing End Sub
方法2:使用64位DAO库连接
若ACE驱动方案仍报错,可尝试64位DAO库,它对旧版Access格式的兼容性更稳定:
- 打开VBA编辑器,依次点击工具→引用,勾选
Microsoft Office 16.0 Access Database Engine Object Library(版本号随Office版本变化,如15.0对应Office 2013)。 - 使用以下代码连接:
Sub ConnectWithDAO() Dim db As DAO.Database Dim rs As DAO.Recordset Dim dbPath As String dbPath = "C:\Your\File\Path\YourDB.mdb" '打开数据库:第三个参数为False表示可读写,第四个参数为密码(无密码可省略) Set db = OpenDatabase(dbPath, False, False, ";pwd=你的数据库密码;") Set rs = db.OpenRecordset("YourTableName", dbOpenDynaset) '读取数据示例 Do While Not rs.EOF Debug.Print rs(0).Value rs.MoveNext Loop '释放资源 rs.Close db.Close Set rs = Nothing Set db = Nothing End Sub
方法3:间接中转方案
如果上述方法均无效,可采用绕过64位限制的间接方案:
- 32位Office中转:安装32位Access/Excel,编写32位VBA脚本将Access 97数据导出为CSV或xlsx格式,再用64位Excel读取导出后的文件。
- 第三方64位驱动:部分第三方ODBC驱动(如Easysoft ODBC-Access Driver)支持64位环境读取Access 97格式,需注意版权与兼容性。
内容的提问来源于stack exchange,提问作者jpi76
相关产品推荐
相关产品推荐

