Access 2007 宏能否确定其自身的名称..?

Can an Access 2007 Macro determine the name of itself..?

Access 2007 宏能否确定其自身的对象名称..?

我的数据库严重依赖导航窗格自定义组,其中一些有数百个或多个对象。我想创建一个通用宏,我可以复制、重命名和放入任何组,这将执行最好总结为 "do this task with every other object in this group".

的操作

为此,宏需要知道它自己的名称,因此可以在 MSysNavPane* 组中查询该名称,然后可以从那里继续工作。

我似乎记得 VBA 程序很难甚至不可能知道它们自己的名称,但我找不到关于此主题的有关 Access 宏的任何信息。

据我所知,没有。宏只能执行简单的命令。 您可以做的事情:

列出所有打开的宏(按照当前正在编辑的方式打开,而不是运行)

Public Function AllMacros()
    Dim obj As AccessObject, dbs As Object
    Set dbs = Application.CurrentProject
    ' Search for open AccessObject objects in AllMacros collection.
    For Each obj In dbs.AllMacros
    If obj.IsLoaded = True Then
    ' Print name of obj.
    Debug.Print obj.Name
    End If
    Next obj
End Function

为此目的使用表格

创建一个计时器设置为 1 的空白表单,并添加以下子项(它运行 MyFunction 并将表单名称作为参数传递)

Private Sub Form_Timer()
    Me.Visible = False
    Run "MyFunction", Me.Name
    DoCmd.Close acForm, Me.Name
End Sub

应该完全按照您想要的宏运行,只是它是一种形式而不是宏