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
应该完全按照您想要的宏运行,只是它是一种形式而不是宏
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
应该完全按照您想要的宏运行,只是它是一种形式而不是宏