2.4 我的宏为什么运行不了

从某种意义上说,宏是自动生成的VBA代码,VBA程序是用户手动编写的宏。熟练的VBA程序员能够编写功能强大的VBA程序,这些代码能够在计算机上自动完成很多复杂的工作,不仅仅是针对Excel工作表中的数据,还可以针对系统文件。因此,宏的使用实际上是存在着安全隐患的,用户对宏的安全性也提出了很高的要求。Excel提供了细致的宏安全性设置,能够杜绝大多数情况下对工作簿的危害。但是如果不知道Excel宏安全性设置的问题,在VBA编写程序时可能就会遇到些麻烦,程序将可能无法正常运行。

2.4.1 让你的宏更安全

要保证宏的安全,最简单的方式就是不要让宏随意地运行,也就是在宏运行时告知用户,由用户来判断其是否是安全的,然后决定能否让其运用。对宏安全性进行设置的操作方法如下所示。

01 启动Excel 2016并创建一个空白工作簿,打开“Excel选项”对话框,在左侧列表中选择“信任中心”选项,单击右侧的“信任中心设置”按钮,如图2-29所示。

图2-29 单击“信任中心设置”按钮

02 此时将打开“信任中心”对话框,在左侧列表中选择“宏设置”选项,在右侧的“宏设置”栏中选择相应的选项进行宏安全设置。如这里选择“禁用所有宏,并发出通知”单选按钮,如图2-30所示。单击“确定”按钮关闭“信任中心”对话框和“Excel选项”对话框,完成设置。

图2-30 宏安全设置

提示:下面对“宏设置”下4个单选按钮的意义进行介绍。

● “禁用所有宏,并且不通知”:如果不信任宏,可以使用这个选项。此时,文档中所有的宏将被禁止运行,同时也不会给出安全警告。该选项的安全级别是最高的。

● “禁用所有宏,并发出通知”:该选项是默认设置。如果想禁止宏的运行,但又希望Excel能够在存在宏时给出安全警告,可以选择这个选项。

● “禁用无数字签署的所有宏”:该设置项的作用与“禁用所有宏,并发出通知”选项相同。如果宏已由受信任的发行者给予了数字签名,则信任的发行者可以直接运行宏,不信任的发行者将会发出通知,所有未签名的宏都将被禁用且不发通知。

● “启用所有的宏(不推荐,可能会运行有潜在危险的代码)”:如果选择该选项,宏将被无条件执行,Excel也不会给出提示。这个设置项安全性最低,计算机容易受到恶意宏代码的攻击。

03 单击“确定”按钮分别关闭“信任中心”对话框和“Excel选项”对话框,Excel在打开包含宏的工作簿时,会给出提示,提示宏已禁用。如果要使宏可用,可以单击“启用内容”按钮,如图2-31所示。对安全警告不予理睬或是关闭该条警告,都将使宏不可用。

图2-31 宏安全警告

2.4.2 对文件进行限制

在进行宏安全设置时,对所有的宏都禁用显然不现实,允许所有的宏运行肯定不安全,每次通过安全警告来启用自己信任的宏又不太方便,这时可以使用折衷的方法,就是将能够完全信任的宏放置到一个专有的文件夹中,在Excel中设置对该文件夹中文件的信任,让该文件夹中文件的宏能够直接运行。

(1)打开“信任中心”对话框,在左侧列表中选择“受信任位置”选项,单击“添加新位置”按钮,如图2-32所示。

图2-32 单击“添加新位置”按钮

(2)此时将打开“Microsoft Office受信任位置”对话框,在对话框的“路径”文本框中输入受信任文件所在文件夹地址,如图2-33所示,单击“确定”按钮关闭对话框完成设置。这样打开该文件夹中包含宏的Excel文档时,宏将允许运行。

图2-33 “Microsoft Office受信任位置”对话框

提示:如果希望信任指定文件夹的子文件夹中的文件,可以在“Microsoft Office受信任位置”对话框中选中“同时信任此位置的子文件夹”复选框。