Access2016由于无法读取数据库中所含的VBA工程,因此无法打开此数据库。只有先删除VBA工程,然后才能打开数据库

2017-10-14 22:55:00
zstmtony
原创
466

从国庆节前几个企业客户的反馈以及最近网友的报料,发现Access2016最近几次更新导致一个较大的乌龙(大Bug), 这个Bug可能会导致网友误判,从而以为自己的数据库VBA工程损坏而不断修复或重新推倒重做数据库,浪费大量的时间。

这几天不少QQ用户也在群里不断咨询这个问题,发现有必要写一篇解决办法的教程:


最近Access2016经常打开一些Access数据库文件(mdb 或Accdb),会提示以下错误:

由于无法读取数据库中所含的VBA工程,因此无法打开此数据库。只有先删除VBA工程,然后才能打开数据库。删除VBA工程将同时从模块、窗体及报表中删除所有代码。在试图打开数据库并删除 VBA 工程前,应先对数据库进行备份。
若要创建一份备份副本,请单击"取消",然后备份数据库。若要在不创建备份副本的情况下打开数据库并删除 VBA 工程,请单击"确定"


而使用Access2013 ,Access2010 甚至 Access2003打开同一个文件则正常


这是由于Access2016最近更新乌龙导致的


可能出错的Access2016的版本

Microsoft Access 2016 MSO (16.0.8431.2046) 32位


只要最近的Access2016常会出现这个问题,是由于windows自动更新后导致access的vba编译器版本出现故障造成的问题,需要再从微软官方更新一下office补丁。微软现在对Access是越来越不上心了,且常常更新导致很多乌龙,前段时间Access2016已经出现过好几次bug了


使用帐户-更新选项-立即更新 一下即可





更新后打开同一个文件则完全正常了,不过更新后,版本号并没有变更,所未更新前版本号(小版本号)是一样的

还是 Microsoft Access 2016 MSO (16.0.8431.2046) 32位, 但VBA工程出错的问题解决了。


需要注意的事,这个更新过程时间会有点久,在更新过程中单击继续后,还需要等待一段时间,如果马上打开Excel word 或Access

会提示以下错误:

office 2016  应用程序无法正常启动(0cx0000022),请单击“确定”关闭应用程序

只须耐心再等待几分钟,再打开就正常了。



另一种可能就是在英文环境下打开中文制作的Access数据库也会出现这个故障

这是因为中英文系统变化引起,中文系统做的程序到英文系统会出现这个问题
解决办法.
1、换成对应的语言的系统及对应语言的Office,
2,在英文系统重新设计相关窗体,将表 查询 窗体 报表 模块中使用的各种变量 窗体节名 控件名全部改为英文即可
3、出现这个提示后选取消,再操作几次,有可能不再出现,对有问题的功能重新设计

一般养成习惯,所有对象名(表名 查询名 窗体名 报表名 模块名 节名) 变量名 尽量使用英文。一般都可杜绝这类问题。


还有一种情况是 VBA代码的确损坏了。这种则要对Access数据库进行修复了。



下面有一篇如何避免Access数据库损坏的经验 之谈:

http://www.office-cn.net/access-develop/389.html


说起来,Office2016真不让人省心,最近bug不断。我们都在敢微软的小白鼠。


Access2016的其它几个bug:
Access2016的另一个bug, 窗体控件的组合框(下拉框)行来源受表的查阅的属性设置影响

Access2016打开包含有Treeview树控件的mdb数据库出错-您没有使用该Activex控件的许可

    分享