您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > ExcelVBA实例教程044禁用宏则关闭工作簿
通常情况下,当应用程序的宏安全性的安全级别设置为“中”时,打开包含MicrosoftExcel4.0版的宏的工作簿,将显示如图1所示的“安全警告”对话框。图1安全警告对话框如果用户选择“禁用宏”按钮,则会显示如图2所示的警告消息框,当用户选择“否”时,不能打开该工作簿;用户选择“是”时,打开该工作簿,但VBA宏被禁止,而MicrosoftExcel4.0版的宏未被禁止。图2MicrosoftExcel4.0宏警告对话框我们可以利用禁用VBA宏不能禁止MicrosoftExcel4.0版的宏这个特点,使用MicrosoftExcel4.0版的宏来实现禁用宏则关闭工作簿的功能。步骤1新建或打开需要添加此项功能的工作簿文件。步骤2按Ctrl+F11组合键为工作簿添加一个宏表,添加的宏表名称默认为“Macro1”。步骤3在宏表“Macro1”的A1至A7单元格中输入下面的内容。禁用宏则关闭工作簿1.=ERROR(FALSE)2.=IF(ERROR.TYPE(RUN(TestMacro))=4)3.=ALERT(因禁用了宏功能,文件将被关闭!,3)4.=FILE.CLOSE(FALSE)5.=END.IF()6.=RETURN()完成后的宏表如图3所示。图3完成输入后的宏表代码解析:MicrosoftExcel4.0宏函数以等号(=)开始,其他不是由等号开始的内容将被视作注释。通常用作定义的宏名称或者作为宏函数实现功能的注释内容设置为斜体字样以示区别,如图3中单元格A1所示。第2行代码关闭错误检查功能。如果关闭错误检查,那么当宏执行遇到错误时,MicrosoftExcel将不予理会而继续执行。第3行到第6行代码使用If函数与End.If函数构成条件判断语句。其中,第3行中的语句通过检查宏函数RUN(TestMacro)的返回错误类型是否为4(禁用宏时的返回结果),判断工作簿是否禁用了宏功能。如果第3行的结果为True,则执行下面的语句。在第4、5行代码,插入几个空格来表示相关代码之间的层次结构。第4行中的代码显示一个消息框。第5行中的代码关闭当前活动工作簿,设置参数值为Fasle表示关闭时工作簿时不保存对其所作的更改。第7行代码终止当前代码的执行。MicrosoftExcel4.0宏要求每个宏必须使用RETURN或HALT函数结束。步骤4为每个表添加工作表级别的名称“Auto_Activate”,并将引用都指向宏表“Macro1”的A2单元格。“Auto_Activate”是一个自动宏,表被激活时自动执行。添加工作表级别的名称的方法如下:选择一张工作表,假设为表“Sheet1”,单击菜单“插入”→“名称”→“定义名称”。在“定义名称”对话框中添加名称,如图4所示。图4定义工作表级别的名称输入完成后单击“确定”按钮,完成一张工作表的“Auto_Activate”的定义。完成定义后的名称将在“定义名称”对话框中显示,如图5所示。依次为每个表添加“Auto_Activate”名称。图5名称对话框中的工作表级名称此外,使用VBA也可以实现同样的操作,并且使用VBA的好处是能够隐藏名称,以避免名称被删除或修改。代码如下:1.SubAddPrivateNames()2.DimshtAsObject3.ForEachshtInSheets4.ThisWorkbook.Names.Addsht.Name&!Auto_Activate,_5.=Macro1!$A$2,False6.Next7.EndSub步骤5运行下面的代码,隐藏宏表工作表:1.SubHideMacroSheet()2.ThisWorkbook.Excel4MacroSheets(1).Visible=xlSheetHidden3.EndSub步骤6保存工作簿。当应用程序的宏安全性的安全级设置为“中”时,如果用户打开该工作簿文件并选择“禁用宏”,将显示如图2所示的警告消息框。当用户选择“是”时,活动工作表上的自动宏“Auto_Activate”将被执行,执行结果显示如图6所示的消息框,当用户选择“确定”按钮后,将强制关闭该工作簿文件。图6警告消息框
本文标题:ExcelVBA实例教程044禁用宏则关闭工作簿
链接地址:https://www.777doc.com/doc-2872714 .html