8.6 宏对象的其他应用
8.6.1利用宏生成 VBA程序代码
8.6.2启动时自动运行的宏 AutoExec
8.6.3响应组合键的宏组 AutoKeys
返回
由于宏的设计过程是一个人机对话的过程,
它不要求设计者刻意地记忆命令、参数及其相
关语法,因此是一种非常方便的编程工具。实
际上,宏本身就是程序,只不过是一种控制方
式简单的程序而已。它由若干操作组成,一般
情况下采用顺序执行的方式运行,也可以通过
设置操作执行的条件来实现操作执行顺序的跳
转。
自然会考虑能否利用宏设计视图以人机对
话的方式设计宏,然后将其转换为对应的 VBA
程序,
8.6.1 利用宏生成 VBA程序代码
首先,在数据库设计视图宏对象选项
卡上选中需要转换为 VBA程序的宏对象,
然后在窗口菜单栏上依次单击【工具】 |
【宏】 |【将宏转换为 Visual Basic代码】
命令,随即弹出“转换宏”对话框,单
击其上的“转换”按钮,”,
即完成了将宏转换为 VBA程序的过程。
例如,可以将,零售商店管理信息系
统” 数据库中的宏“销售记录”转换为对应的
VBA程序。其操作过程为:在数据库设计视图
宏对象选项卡上选中宏“销售记录”,在窗口
菜单栏上依次单击【工具】 |【宏】 |【将宏转换
为 Visual Basic代码】命令,随即弹出的“转换
宏”对话框如图 8-15所示。根据需要在这个对
话框中完成两个选项的选定操作后,单击“转
换”按钮,”,即可将宏对象“销售
记录”转换成为一个名为“被转换的宏 —— 销
售记录”的模块对象,其间包含着与宏“销售
记录”的功能完全相同功能的 VBA程序代码。
图 8-15, 转换宏, 对话框
在, 转换宏, 对话框中有两个选项,
选中后依次表示:转换形成的 VBA程序
中包含进行出错处理的 On Error子程序段;
转换形成的 VBA程序中包含关于宏对象
的注释 。
此处,让我们来看看转换成的 VBA
程序代码,其间包含出错处理程序段和
宏注释。
'------------------------------------------------------------
' 销售记录 _销售记录
'------------------------------------------------------------
Function 销售记录 _销售记录 ()
On Error GoTo 销售记录 _销售记录 _Err
' 打开, 销售数据录入, 窗体
DoCmd.OpenForm "销售数据录入 ",acNormal,"",
"",,acNormal
If (Weekday(Date,2) = 7) Then
' 若逢周日, 给出提示
Beep
MsgBox "今天周日, 客流量较大, 辛苦了 ! ",
vbOKOnly,"注意,"
End If
销售记录 _销售记录 _Exit:
Exit Function
销售记录 _销售记录 _Err:
MsgBox Error$
Resume 销售记录 _销售记录 _Exit
End Function
注意, 由宏转换成的 VBA程序段是一个 VBA函数
,Function”,其调用方式不同于 VBA子程序
,Private Sub”。
如果在一个 Access数据库中创建一个命
名为,AutoExec”的宏对象,将得到这样
一种效果:一旦这个数据库被打开,
AutoExec宏对象中的第一个宏将得到执
行。这是因为,只要 Access得到打开一
个数据库的操作指令,它将在打开这个
数据库后立即去寻找其中是否存在一个
命名为,AutoExec”的宏对象,如果找到,
则运行它。
8.6.2 启动时自动运行的宏 AutoExec
合理地使用这个命名为 AutoExec的特殊宏, 可在
首次打开数据库时执行一个或一系列的操作,
包括某些应用系统初始参量的设定, 打开应用
系统操作主窗口等等 。
在实例, 零售商店管理信息系统, 数据库中,
设计有一个名为, AutoExec”的宏对象, 其间包
含一个操作:
OpenForm "零售商店管理信息系统 ",acNormal,
"","",,acNormal
这就使得当打开,零售商店管理信息系统,
数据库时,即会自动打开数据库窗体,零售商
店管理信息系统,,而这个窗体是整个数据
库应用系统的主控窗体。对于一个可以发布的
数据库应用系统,这一项功能是非常必要的。
对于一个包含,AutoExec”宏的 Access数据
库,如果想在打开数据库时阻止自动运行
,AutoExec”宏,可在打开数据库时按住 SHIFT
键不放开,以此来阻止 Access自动运行
,AutoExec”宏。
除了可以利用,AutoExec”宏实现打开数据
库时自动运行一个应用程序以外,Access还提
供另外一种实施方案:通过设置数据库设计视
图窗口菜单栏上的【工具】 |【启动】命令,在
随即弹出的“启动”对话框中进行合适的选项
设置,也可以控制如何启动数据库或应用程序。
“启动”对话框如图 8-16所示,其中,我们设
置启动显示窗体为,零售商店管理信息系
统,。
图 8-16 用于设置启动程序的, 启动, 对话

在一般 Windows应用程序中,为了使用剪
贴板进行对象的复制粘贴操作,除了可
以利用菜单选项或工具按钮实现以外,
可能很多人都知道,^C”是复制操作的组
合式快捷键、,^V”是粘贴操作的组合式
快捷键,且非常习惯于使用它们。那么,
在一个 Access数据库应用系统中,是否
也可能出现对这种组合式快捷键的应用
需求呢?如果确实有这样的需求,又该
如何满足它呢?
8.6.3 响应组合键的宏组 AutoKeys
为了满足这种对于组合式快捷键的
应用需求,Access提供了另一个特殊的
宏对象名,AutoKeys”。 在命名为
,AutoKeys”的宏对象中,我们可以采用
宏组的形式定义某些组合键按下后应该
进行的操作,从而为 Access数据库应用
系统提供一整套组合式快捷键功能。
例如,在实例,零售商店管理信息系统,
数据库中,设计有一个名为,AutoKeys”的宏对
象,其间包含五个宏,每个宏包含一个
,RunMacro”操作,分别定义了:,^g”组合键
执行宏“柜存信息”,,^j”组合键执行宏“进
货数据”,,^k”组合键执行宏“库存数据”,
,^s”组合键执行宏“上柜数据”,,^x”组合键
执行宏“销售数据”。在这个宏对象的支持下,
按下上述任一组合键即可运行相应的宏,而这
些宏又都分别包含打开某一个窗体对象的操作,
因此使得打开相应窗体对象的操作可以采用上
述快捷键的方式进行,从而方便了操作者的操
作过程。
实例, 零售商店管理信息系统, 数据库中的
宏对象, AutoKeys”设计视图及其对应操作参数
设置如图 8-17所示。
图 8-17, AutoKeys”设计视图及其对应
操作参数设置
注意,Access本身已经具有一些默认
的组合式快捷键功能,如果利用
AutoKeys宏对象定义的组合式快捷键与
某一些 Access默认的组合式快捷键功能
冲突,则利用 AutoKeys宏对象定义的组
合式快捷键功能有效,而那些 Access默
认的组合式快捷键功能无效。