在VBA中,不能使用Access.Application对象

时间:2009-06-26 14:29:15

标签: ms-access vba registry

这不起作用:

Sub X()
    Dim A As Access.Application
    Set A = CreateObject("Access.Application")
    'Do Stuff
End Sub

然而,这可行:

Sub X()
    Dim A As Object
    Set A = CreateObject("Access.Application")
    'Do Stuff
End Sub

我知道他们几乎做了同样的事情,但任何人都可以告诉我如何制作access.application对象吗?我应该补充一点,我有Crystal Reports 11,在我上次升级时,它可能有'未注册'的一些VBA DLL。

(2009-06-29更新)

在回答前两个问题时,我正在使用MS Access VBA来控制其他一些Access& Excel文件。由于这只能在我的本地机器上运行,我可以保证始终安装Access。我还引用了“Microsoft Access 11.0对象库”(MSACC.OLB)。

我知道有解决方法,即在编码时使用早期绑定,并在运行时切换到后期绑定,我只是不明白为什么早期绑定方法在我的机器上根本不起作用(当然,代码在另一台具有Access的机器上正常工作。

3 个答案:

答案 0 :(得分:5)

如果您在Access中编写此代码,则无需执行此操作,因为Application对象已经存在。如果您在Excel或Word中编写此文件,则需要添加对Access Library的引用。转到工具/参考并查找Microsoft Access XX对象库

答案 1 :(得分:1)

你好,你说的代码不起作用是合法的语法。你遇到了什么错误?什么时候发生?你知道它发生的代码行吗?

正如旁注所示,这也是合法的语法:

    Dim accApp As Access.Application
    Set accApp = New Access.Application

但要明确的是,CreateObject语法是合法的,而不是问题的根源。

答案 2 :(得分:1)

从MS Access的“帮助”菜单中尝试“检测并修复”。对我来说很完美。