最新的Access 2013 安装后,已经不能对dbf文件进行链接读取了,Access 2010以前的版本都可以,如果以前的项目用了Access链接大量的dbf文件的话,
升级Access 2013后,访问链接dbf文件的表,就会出错,具体的解决办法是,安装Access 2010的运行时环境,在改注册表。
我的环境是win7 64bit + Office 2013 plus 64bit。
1,下载Access 2010的支持环境AccessDatabaseEngine_X64.exe
https://www.microsoft.com/en-us/download/details.aspx?id=13255
2,修改注册表,将下面的文件保存为一个merge.reg文件,双击这个文件导入注册表。
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINESOFTWAREMicrosoftOffice15.0Access Connectivity EngineEnginesXbase] "win32"="C:\PROGRA~1\COMMON~1\MICROS~1\OFFICE14\ACEXBE.DLL" "Mark"=dword:00000000 "DbcsStr"=hex:01 "Date"="MDY" "Exact"=hex:00 "Deleted"=hex:01 "Century"=hex:00 "CollatingSequence"="Ascii" "DataCodePage"="OEM" "NetworkAccess"=hex:01 "PageTimeout"=dword:00000258 [HKEY_LOCAL_MACHINESOFTWAREMicrosoftOffice15.0Access Connectivity EngineISAM Formats] [HKEY_LOCAL_MACHINESOFTWAREMicrosoftOffice15.0Access Connectivity EngineISAM FormatsdBASE 5.0] "Engine"="Xbase" "ExportFilter"="dBASE 5 (*.dbf)" "ImportFilter"="dBASE 5 (*.dbf)" "CanLink"=hex:01 "OneTablePerFile"=hex:01 "IsamType"=dword:00000000 "IndexDialog"=hex:00 "CreateDBOnExport"=hex:00 "SupportsLongNames"=hex:00 [HKEY_LOCAL_MACHINESOFTWAREMicrosoftOffice15.0Access Connectivity EngineISAM FormatsdBASE III] "Engine"="Xbase" "ExportFilter"="dBASE III (*.dbf)" "ImportFilter"="dBASE III (*.dbf)" "CanLink"=hex:01 "OneTablePerFile"=hex:01 "IsamType"=dword:00000000 "IndexDialog"=hex:00 "CreateDBOnExport"=hex:00 "SupportsLongNames"=hex:00 [HKEY_LOCAL_MACHINESOFTWAREMicrosoftOffice15.0Access Connectivity EngineISAM FormatsdBASE IV] "Engine"="Xbase" "ExportFilter"="dBASE IV (*.dbf)" "ImportFilter"="dBASE IV (*.dbf)" "CanLink"=hex:01 "OneTablePerFile"=hex:01 "IsamType"=dword:00000000 "IndexDialog"=hex:00 "CreateDBOnExport"=hex:00 "SupportsLongNames"=hex:00
注意事项:
1,如果是在win7 64bit安装的32bit 的Office 2013,需要下载32位的AccessDatabaseEngine_X32.exe。
参考这篇文章:http://jonwilliams.org/wordpress/2014/03/21/enabling-xbase-dbf-support-in-microsoft-office-access-2013/
2,注册表内容用下面的内容替换:
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINESOFTWAREWow6432NodeMicrosoftOffice15.0Access Connectivity EngineEnginesXbase] "win32"="C:\PROGRA~2\COMMON~1\MICROS~1\OFFICE14\ACEXBE.DLL" "DbcsStr"=hex:01 "Mark"=dword:00000000 "Date"="MDY" "Exact"=hex:00 "Deleted"=hex:01 "Century"=hex:00 "CollatingSequence"="Ascii" "DataCodePage"="OEM" "NetworkAccess"=hex:01 "PageTimeout"=dword:00000258 [HKEY_LOCAL_MACHINESOFTWAREWow6432NodeMicrosoftOffice15.0Access Connectivity EngineISAM Formats] [HKEY_LOCAL_MACHINESOFTWAREWow6432NodeMicrosoftOffice15.0Access Connectivity EngineISAM FormatsdBASE 5.0] "Engine"="Xbase" "ExportFilter"="dBASE 5 (*.dbf)" "ImportFilter"="dBASE 5 (*.dbf)" "CanLink"=hex:01 "OneTablePerFile"=hex:01 "IsamType"=dword:00000000 "IndexDialog"=hex:00 "CreateDBOnExport"=hex:00 "SupportsLongNames"=hex:00 [HKEY_LOCAL_MACHINESOFTWAREWow6432NodeMicrosoftOffice15.0Access Connectivity EngineISAM FormatsdBASE III] "Engine"="Xbase" "ExportFilter"="dBASE III (*.dbf)" "ImportFilter"="dBASE III (*.dbf)" "CanLink"=hex:01 "OneTablePerFile"=hex:01 "IsamType"=dword:00000000 "IndexDialog"=hex:00 "CreateDBOnExport"=hex:00 "SupportsLongNames"=hex:00 [HKEY_LOCAL_MACHINESOFTWAREWow6432NodeMicrosoftOffice15.0Access Connectivity EngineISAM FormatsdBASE IV] "Engine"="Xbase" "ExportFilter"="dBASE IV (*.dbf)" "ImportFilter"="dBASE IV (*.dbf)" "CanLink"=hex:01 "OneTablePerFile"=hex:01 "IsamType"=dword:00000000 "IndexDialog"=hex:00 "CreateDBOnExport"=hex:00 "SupportsLongNames"=hex:00
win7 32bit 下安装 Office 2013 32bit的话,上面的注册表文件的内容值做相应的修改,原则就是注册表的key路径要匹配你2010的安装路径,
例如这些路径是否正确:
[HKEY_LOCAL_MACHINESOFTWAREWow6432NodeMicrosoftOffice15.0Access Connectivity EngineISAM FormatsdBASE IV]
举一反三,不再例举。