当前位置: > 手游资讯 > 新手问答 

禁用宏(禁用宏则关闭Excel文件)

作者:哪吒游戏网

禁用宏则关闭Excel文件 一、实例说明: 当打开含有宏的文件时,如果“禁用宏”并打开文件后,所有编辑的VBA程序 将失效。如何当用户打开 Excel 文件并禁用宏时,让文件自动关闭呢?本例即是调 用Excel4.0 版(Excel 的一个老版本)的宏命令来解决这个问题。因为“禁用宏”功 能无法禁用4.0 版本的宏。 设置完成后,当用户打开文件并点击禁用宏按钮后,会弹如图1-24 所示提出框, 当击“确定”按钮关闭提示框后该文件就会自动关闭。 图1-1 禁用宏后的提示信息 二、设置步骤和使用方法: 打开自已含有宏的文件或者新建一个Excel 文件。然后在 VBE 编辑器中添加一 个模块。并写入以下代码: Function MY() End Function 添加后的效果如图1-2 所示 禁用宏则关闭 Excel 文件 图1-2给文件添加一个模块并写入代码 2、在任一个工作表标签上单元格右键,执行插入命令打开如图1-26 所示插入 对话框,在常用选项卡中选取“MS Excel4.0 宏表”项,然后点击确定按钮后便会在 当前工作簿中新建一个默认名Macro1 的“宏表”。如图1-27 所示。

图1-3 打开插入对话框 禁用宏则关闭 Excel 文件 图1-4插入的宏表 在宏表的以下单元格中输入公式:A2 单元格: =ERROR(FALSE) A3 单元格: =RUN("MY") A4 单元格: =IF(ISERROR($A$3)) A5 单元格: =GOTO($A$11) A6 单元格: =END.IF() A7 单元格: =ERROR(TRUE) A8 单元格: =RETURN() A11 单元格:=ALERT("对不起!由于禁用了宏,本文件将自动关闭!",3) A12 单元格:=FILE.CLOSE(FALSE) A13 单元格:=RETURN() 添加后的效果如图所示1-28 禁用宏则关闭 Excel 文件 图1-5在宏表中添加公式后的效果 逐个选取工作簿中其他工作表,然后执行插入/名称/定义命令,打开定义名称对话框。在“在当前工作簿中的名称”框中输入:工作表名称 +Auto_Activate。如图1-29 所示在Sheet1 工作表中打开定义名称对话框,定 义的名称就为:Sheet1!Auto_Activate 。然后在引用位置文本框中输入: =Macro1!$A$2。

图1-6 在每个工作表中都定义相对应的名称 注:当禁用宏并打开设置名称的工作表后,都会自动关闭文件。有一点值得说明一 下,如果对于一个工作表数量较多的工作表逐个设置会很麻烦。所以这时可以只需 禁用宏则关闭 Excel 文件 为其中一个设置名称,但要保障“当打开工作簿时,必需是设置名称的工作表处于选取状态”。为了能达到这个效果,建议关闭文件前把除“定义名称工作表”之外的 其他工作表都设置为隐藏。 在每个工作表都定义名称后,保存并关闭文件。整个操作过程序结束。三、代码要点分析 由于宏表函数的使用和运行比较复杂禁用宏,所以这里不再详细说明。读者只需按照上 述步骤实现“禁用宏则关闭Excel 文件”的功能即可。读者可以在已编写宏命令的文 件中进行以上操作,也可以先新建一个文件完成以上步骤后禁用宏,再编写自已的程序代 码和进行其他的工作表和单元格等编辑。 Sub AddName() '在“工作表中”插入"Auto_Activate"名称 第一个工作表是宏表,所以从第二个工作表起Sheets(i).Names.Add Name:="Auto_Activate", RefersToR1C1:="=Macro!R1C1" 意,该行代码最前面是“Sheets(I).Names”,而不是“ThisWorkbook.Names”,插入的就只是属于该“工作表中”的名称而不是“工作簿中”的名称 Sheets(i).Names("Auto_Activate").Visible 隐藏该名称,如果你不想隐藏该名称就不要使用此代码。 Next EndSub