编辑:看到我的评论下面的部分解决方案。如何在不打开编辑器的情况下在VBA编辑器中动态打开类对象?
编辑2:我发现关闭VBA编辑器中适当的解决方案,但只是想看看是否有人知道如何使整个时间它完全不可见的。我发现的东西可以满足我的需求,但是我会把这个线索留给任何想要详细说明另一种方法或扩展我的东西的人。
原贴:我有一个创建表,查询和表单功能。对于表单,它复制一个模板表单并调用一个可以动态替换表单VBA代码的函数。下面的功能我创造伟大的作品,但是,如果我没有在编辑器中打开类对象的形式,我得到的运行时错误“2516”:“Microsoft Access不能找到模块,其中SPCInputFormVBA是‘SPCInputFormVBA。’一个用于类对象名称的变量为了进一步阐述这种行为,如果我关闭了编辑器,只要模块或类对象在编辑器中打开,它仍然可以工作,我希望能够激活在没有编辑器打开编辑器相应Form_xyz对象,这样,因为有很多事情嵌套在它,我可以用这个功能做了一堆东西给它。我使用的是模板形式,有很多事情。我可以改变记录来源和其他各种东西,但是VBA部分到目前为止还是难以捉摸,我认为打开对象很容易,但是我遇到了很多麻烦,找不到方法来形容我的问题,导致我找到解决方案。
Public Function InputFormVBA(SPCInputFormVBA)
DoCmd.OpenModule (SPCInputFormVBA)
Dim i As Integer
With Application.Modules(SPCInputFormVBA)
For i = 1 To .CountOfLines
If InStr(.Lines(i, 1), "TempTable") > 0 Then
' .ReplaceLine i, " If DCount(""serial"", """ & tblName & """, _"
End If
'If Instr(.Lines(i, 1), "
Next i
End With
End Function
我来尝试使用此功能不同的东西,以帮助我了解访问将如何不同的可能的解决方案反应最近我在网上找:
Sub PrintOpenModuleNames()
Dim i As Integer
Dim modOpenModules As Modules
Set modOpenModules = Application.Modules
For i = 0 To modOpenModules.Count - 1
Debug.Print modOpenModules(i).Name
'DoCmd.OpenModule (modOpenModules(i).Name)
Next
End Sub
的'DoCmd.OpenModule (modOpenModules(i).Name)
被注释掉这个例子会打开一些东西,但它只能看到已经打开的东西,这对我没有帮助。我明白,有不同类型的模块,但我不知道如何区分和在线文档解释了一般差异,但没有透露任何联系类对象的方式,除非它已在编辑器中打开。希望有人可以帮助甚至纠正我的术语,如果它停用并引导我到现场的其他解决方案。
我已经想出了一个部分解决方案。 我觉得自己做得这么复杂很愚蠢。如果您遇到类似的问题,可以简单地:DoCmd.OpenForm(变量),acDesign。 这将允许在VBA编辑器中访问其类对象实例。它将打开VBA编辑器,所以我只需要弄清楚如何防止它,或者找到一种方法来动态保存并关闭编辑器。 –
我发现我可以使用:Application.VBE.MainWindow.Visible = False关闭它。它只是一秒开放,我不认为这是一个大问题。任何人都有另一种方式来完全隐藏它? –