小编Sco*_*ody的帖子

如何在不打开编辑器的情况下在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
Run Code Online (Sandbox Code Playgroud)

我最接近的是尝试使用此功能的各种事情,以帮助我了解Access如何对我在网上找到的不同潜在解决方案做出反应:

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) …
Run Code Online (Sandbox Code Playgroud)

ms-access vba access-vba ms-access-2010

0
推荐指数
1
解决办法
627
查看次数

标签 统计

access-vba ×1

ms-access ×1

ms-access-2010 ×1

vba ×1