访问:DAO引用guid已更改,导致.mde无法在Win7上的Access 14(2010)中启动

时间:2011-01-26 20:06:04

标签: ms-access windows-7 access-vba dao

2011年2月2日:我开始这个帖子的印象是我的M $ technet线程已经死了。但是有一篇关于这个主题的新帖子,请看一下:http://social.technet.microsoft.com/Forums/en-US/officeitpro/thread/56e098b9-210b-4afe-8531-c526fb3e4464 1。不是解决方案,而是确认7,14和mde的组合至关重要。

- 原帖:

由于我们仍有客户端使用Office 9(2000),因此我们以.mde文件格式(Access 2000的数据库格式)为所有Access版本9到14(2010)部署我们的前端,而不是“编译”.mde适用于旧版本和.accde适用于较新的Access版本。由于他们的经济状况,我们经常在一家公司的客户工作站上找到所有Office和Windows版本的混合,因此我们的答案最少。直到Office 14与Windows 7结合使用.mde才有问题。我已经分析了所有内容,以确保现在可以在Access 14中与Windows 7一起启动.mde时出现可重现的问题 - Access 14 on XP会起作用。

我们在VBA项目中有一些参考,其中包括Word和DAO。 Word ref。适用于每个Access版本9到14没有问题,它将自动找到适当的版本,因为guid是相同的从Office 9到14.在Office 12(2007)和14(2010)M $之间不仅更改了dll文件DAO的名称,但在我的理解中,参考GUID是至关重要的。 Access在Windows 7下的Access 14下检测新的DAO版本将失败,但只有.mde,.mdb,.accdb和.accde才会启动而没有问题,并且.mde将在Access中启动如上所述,在XP下14。所以这是改变的GUID和系统权利的组合......做什么?查找文件,扫描注册表以获取此处所需的信息?

我认为这不会有一两步“技巧”,但我会很感激提示在Windows 7中检查什么,甚至如何更改我们的VBA代码以摆脱这个问题。关于最后一个选项:我们有许多,很多明确的Dim ...作为DAO ....贯穿我们的代码。

2 个答案:

答案 0 :(得分:0)

由于代码无法在评论窗口中正确格式化,我必须使用答案。请运行以下代码并报告结果。

Sub ViewMoreReferenceDetails()

Dim refIDE As Object

    For Each refIDE In Access.Application.VBE.ActiveVBProject.References
        If refIDE.IsBroken = True Then
            Debug.Print "Broken, GUID - " & refIDE.Guid
        Else
            Debug.Print refIDE.Description & " - " & refIDE.Name & " - " & _
                refIDE.Major & "." & refIDE.Minor & vbCrLf & _
                "       Location - " & refIDE.FullPath
        End If
    Next refIDE

End Sub

答案 1 :(得分:0)

我很惊讶对特定版本的Word引用会自行修复。除了默认的3个Access引用,Access,VBA和DAO之外,我总是使用后期绑定。

在某些情况下DAO可能是一个问题,其中之一就是如果您在编译MDE的机器上或在生产环境中安装了多个版本的Access。 Access的不完整重新注册可能会导致它被破坏,即使它已注册为Access的主要版本。完整的安装(或修复Office安装)应该可以解决这个问题。

有关其他注意事项,请参阅Michael Kaplan's article on the subject of references。它触及DAO注册问题,并特别提到了DAO被破坏的情况,但IsBroken仍然返回False。他说的话可能会给你一些解决问题的方法。

但根据我的经验,您收到的错误表明Access安装已损坏。