课安全选项word版_第1页
课安全选项word版_第2页
课安全选项word版_第3页
课安全选项word版_第4页
课安全选项word版_第5页
已阅读5页,还剩11页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

安全选项安全选项(课堂记录)首先申明,这是QQ聊天课堂,可以轻松一些,随意一些,内容也可能随时根据需求和现场反馈进行调整,所以不要用课堂内容和严密的出版物内容比较。课堂在传授知识的同时,也需要即兴的发挥。今天的课程是安全选项,包含三项内容:VBA的安全性概述、了解ExcelVBA的信任中心、让自己的程序畅通无阻。1.VBA的安全性概述宏很强大,但也同时伴随着隐患。如何最大限度地发挥宏的优势,随心所欲地应用宏的自动化,从而解放双手,同时又能规避隐患,这是每个VBA爱好者梦梦寐以求之事。本课时从宏的起源、发展开始,向同学们阐述宏的强大与隐患这把双面刃。最后教学如何应对这些存在的隐患。1.1宏的起源与发展在1994年上市的Excel5.0版本中即具备了宏功能。宏的出现大大提升了Excel用户的制表效率。尽管第一版的宏功能简单,也没有录制功能,所以必须靠记忆才能学会宏的应用。但是早期的宏也可以批量地完成某些工作,从而解脱双手。在OFFICE多次升级过程中,宏也在逐渐强化,陆续添加了可自动执行的过程(包括Auto_Open宏和Auto_Close)、窗体、事件(用于全面替代早期的自动宏),以及更多的对象、属性和方法,甚至允许调用其它的任何具有开放接口的程序,集成了诸多有用的工具,包括正则表达式(regex)、文件系统对象(FSO)、API(应用程序编程接口)、字典(Dictionary)、磁盘管理系统(DOS)、注册表(Registry)等等。附:在后面的课程中大家会熟悉这些对象,目前不明白含义并不影响学习当前课程。直到现在的VBA7.01版,VBA已经相当完善,能自动化的执行诸多操作,甚至实现无人值守的工作模式。对于“无人值守”,用我的一次亲身经历略作说明。四年前我曾做过半年报表汇总工作,每天将前一天的品检部、生产部和生管部报表整理到一个工作簿中,然后分组统计,并生成图表和透视表发送给经理。以前的同事每天让三个部门的文员将报表发到邮箱中,然后打开三份报表并整理数据、生成总表,每天需要0.5到1小时。当我接手该工作后,采用以下方式处理:(1)在服务器的共享磁盘中创建一个名为“明细”的文件夹,让三个部门的同事将每天完工的明细报表都按今天的日期命名并保存到该文件夹中;(2)在本地磁盘创建一个文件夹“模板”,其中存放一个用于汇总的模板工作簿,工作簿中采用VBA代码自动打开远程共享的明细文件,并按设定的流程全自动汇总报表,当“模板”文件夹中生成汇总表后将汇总结果自动复制一份到服务器中名为“总表”的共享文件夹中,文件以当天的日期命名。图1-1即为文件汇总流程与文件夹之间的关系示意图:总表图1-1文件夹关系示意图(3)通知经理从服务器共享文件夹“汇总表”中提取今日汇总的报表。由于汇总表中的VBA代码设置为打开报表时自动执行,它会到指定的文件夹中检查是否存在需要汇总的三份报表,以日期文件名作为判断标准,如果不存在则产生提示框,然后自动关闭文件;如果文件存在自动汇总报表数据,完成后在本机保存一份汇总表,同时另存一份到共享文件夹“总表”中,一切工作全自动进行,需要执行的只有一步——双击打开本机中的总表模板。换言之,以往近1小时的工作现在只需要双击工作簿就完成了。后来的某天,我因某些原因睡过了头,第二天早上9点多尚未起床,结果经理9:00开会时需要报表。当接通经理的电话后,在电话中告知经理汇总表已经完成,自己有事在外,并请经理打开我的电脑,从D盘中打开汇总表模板查看即可。其实当经理打开该模板时,代码才开始运行,数秒钟后自动汇总完毕,并生成一个汇总表。换言之,某些工作借助VBA可以实现无人值守,让代码全自动执行,从而解脱双手。这正是VBA的魅力。摹而会向,—筑晚及制表界面大汆器/1.2宏的安全隐患不过,VBA在发展的同时也带了隐患一一在90年代末期,由于宏具有自动化功能,所以也为病毒开发了一扇小窗,曾经宏病毒的泛滥给万千Excel用户造成了无穷的困扰。后来微软公司被迫修改了宏的默认安全性设置——默认情况下禁止运行宏,手动单击按钮才可运行。至此宏病毒已消声造迹了多年。不过在2012年下半年开始,又出了几个新的宏病毒,因为近几年Exce用户群体发展壮大较快,用户日益增多,同时由于宏病毒多年不再重现江湖,大家已开始放松了警惕。所以去年新病毒刚开出来,就成千上万的用户中招,包括我自己所在的公司。1.3当前几个宏病毒的特征目前而言,几个较流行的宏病毒包括Startup、results、Bookl、Modulel、K4。其中K4病毒应该是EH一个会员开发的。这也是五个宏病毒中稍有技术含量的一个。不过,当你明白宏病毒的工作原理后,其实自己要开发很简单,当然要杀掉它就更简单。先看看几个病毒都有哪些特征(不完全分析)以及使用了哪些VBA技术。病毒特征就目前个人所看到的几个宏病毒而已,都没有什么破坏性,仅仅恶作剧而已,不会清除用户文件、不会格式化磁盘、不会收集用户登录过的网页注册信息等等。对于恶作剧,主要体现在四方面。其一:禁用一些VBA功能,包括【Alt+F8】、【Alt+F11】等VBA用户必用的组合键。其二:在每个打开的工作簿中创建一个隐藏的工作表,工作表名称根据病毒不同而不同,通常是Startup、Modulel、pldt、laroux、Macrol、XL4Poppy等名字。如果你当前的工作簿中包含这些工作表,且处于隐藏状态,那么十有七八是中了宏病毒。其三:在微软定义的自启动路径下创建一个含有病毒的工作簿,工作簿名称根据病毒不同而不同,通常是Startup.xls、k4.xls、Meralco.xls、Results.xls或者Binv.xls。所以每次打开Excel软件时,这些病毒都会自动运行。其四:病毒代码具有自动复制的功能,通常会把病毒工作簿中的VBA代码复制到每一个打开的工作簿中,从而确保病毒可以继续扩散。现在也有了一些变种、升级,新版的病毒加了每秒钟复制一次代码的操作,从而确保代码不会被破坏。当然,中了病毒后的另个一个表现就是打开和关闭Excel都变慢了。不过它不是病毒的特征,也不是开发病毒者的目的,而是病毒代码运行需要时间,并非开发者的目的是想让中毒者操作变慢。从以上分析,其实病毒并没有任何破坏力,仅仅把代码复制到每一个工作簿中,使其能随时运行而已,在运行过程中不做任何数据破坏。只不过,病毒往往会会遭到用户的干扰,从而不能正常运行,在不能正常运行的情况下反而表现出一定的破坏性。这听起来有些矛盾,但现实就是如此。简言之:病毒正常运行的前提下对用户没有干扰,而在用户想法去阻止病毒,但又没有阻止彻底的情况下,病毒反而就体现出一定的破坏性了。简单举三个案例吧:其一,为了禁止病毒运行,用户将通过调整宏安全性来阻止病毒运行,但又没有在阻止的同时禁止提示,从而造成每次打开有宏病毒的工作簿时都弹出一个提示框,给用户带来困扰。图1-2安全警告其二:宏病毒将切换工作表和【Alt+F8】、【Alt+F11】两个组合键都绑定了病毒代码,也就是说执行这三个操作都会执行代码。如果用户仅仅手工清除代码,却没有使用代码来恢复这3个操作的原始功能,那么执行这三种操作时都会弹出以下提示:图1-3未正确修复Excel时弹出的提示其三:手工删除了宏病毒代码所创建的宏表“Macrol”,但却没有清除调用宏表中的代码的名称,导至开启Excel时仍然会调用宏表“Macrol”中的代码,但由于该表已不存在,所以必定执行失败,从而弹出相应的提示。图1-4未正确修复Excel时弹出的提示这在一定程度上也算是一种破坏,只不过这不是病毒预设的操作,而是用户在破坏病毒时,破坏不完整、不彻底带来的副作用。所以,除非您自己对VBA比较了解,可以自己手工清除病毒,并用代码正确地恢复被绑架了的几个功能,否则还不如不理会病毒,让它继续存在。当然,最好的办法用比较成熟的工具来查杀。当你我熟练掌握VBA后,都可以发开查杀宏病毒的工具。宏病毒所使用的VBA技术就目前的几个宏病毒而言,并没有做什么破坏,但是它为了自我保护,要让代码自动扩散,所以需要使用一些VBA的自动化技术。而这些技术本身是有很用的,大家不要排斥。这就像菜刀一样,刀本身就没有错,只看你怎么用而已。上面提到了5种宏病毒,由于时间关系,只分析一下第一种:Startup病毒,其它的几种大同小异。Startup病毒使用了以下几项关键技术:.传染代码到每一个打开的工作簿,所以创建了一个名为“ycop”的过程,在过程中将病毒工作表复制当前打开的工作簿中。同时为了确保这个过程能自动执行,它采用了三句代码:Application.OnSheetActivate="StartUp.xls!ycop"Application.OnKey"%{F11}","StartUp.xls!escape"Application.OnKey"%{F8}","StartUp.xls!escape"第一句表示每次切换工作簿都自运调用这个过程,从而复制病毒文件;第二句表示按下组合键【Alt+F11】想查看病毒代码时,无法查看到代码,而变成了执行病毒代码;第三句表示用户按下组合键【Alt+F8】想运行自己的代码来查杀病毒时,它能阻止用户运行自己的代码,同时变成执行病毒代码……想想是否可怕?自己在主动调用病毒。不过,这其实全是VBA的基本功能,将它们用在其它地方可以大大的方便工作。另外,如果用户了解VBA,那么宏病毒在面你将无所遁形,瞬间消除它。这叫知己知彼、百战不殆。.使用了定时执行的功能,即Application.OnTime方法,从而使病毒每一秒钟执行一次。Application.OnTimeNow+TimeValue("00:00:01"),"StartUp.xls!ycop".使用了循环语句,逐个检查工作簿中是否存在名为“Startup”的工作表,没有就复制一个过去。.使用了自启动宏,即过程命名为“Auto_open”。微软规定只要模块中的不带参数的Sub过程命名为“Auto_open",那么它就会在打开工作簿时自动执行。病毒利用了这个规则来实现病毒的自动扩散。.使用了安全的自启动路径一一StartupPath。StartupPath这个路径是一个可以自动启动的、且相对安全的路径,也就是说一个病毒保存在这个文件夹中后,每次打开Excel都会自动打开病毒文件,而且微软认为这个路径下的文件是安全的,所以不会阻止打开,即使你将宏的安全性设为最高。以下代码就是病毒代码:ActiveWorkbook.SaveAs(Application.StartupPath&"\"&"StartUp.xls")当你明白这些原理后,其实杀宏病毒就如探囊取物般轻松,主要包括:使用循环语句清除当前所打开的所有工作簿中的指定名称的模块、指定名称的工作表,再使用代码恢复被绑架的三种操作(Application.OnSheetActivate、【Alt+F11】和【Alt+F8]),以及清除自启动路

径(StartupPath)下的病毒文件。Excel百宝箱中就有病毒查找功能:文件开始三三玲。煌〕BA 页面布局 公式般据审阅视图开文件sbj*q油sbj*q油耳磁公农历高级背导环境圜窟匚按背层解降雷涉毒查询▼定位着色设置意磁起电匚总码保护专杀国蜜81国优截圉工选区茸附翦工合并工图片工具铃捷工具▼具箱▼具箱▼具箱▼图1-5Excel百宝箱不过百宝箱为了不影响启用效率,没有设置为启动Excel时自动查杀,而手发现病毒时单击功能区中的“宏病毒专杀”按钮执行查杀。附:本课并不提供完整的病毒代码以及查杀代码,当你学会VBA后,这些知识其实都是初中级知识而已,一点都不高深和神秘,到时你会发现所谓的宏病毒其实不过尔尔,开发和查杀都没有想象中难。了解ExcelVBA的信任中心在学习VBA之前,有必要了解宏的安全性设置选项,在Excel2010中称之为信任中心。打开信任中心的方法如下:.使用组合键【Alt+T+O】打开“Excel选项”对话框。2.进入“自定义功能区”选项卡,将右边的“开发工具”打勾。图2-1添加开发工具然后返回工作表界面,就能看到“开发工具”选项卡了。图2-2功能区中的开发工具3.单击“开发工具”选项卡中的“宏安全性”菜单可以打开Excel的“信任中心”对话框。□尚总卜昌踊宏质用相对引用加骸国&有关徉舐相助r□尚总卜昌踊宏质用相对引用加骸国&有关徉舐相助r请按Flt/三力睡源COM力喷项百宝箱件跑 插入 页囿布局图2-3通过“宏安全性”按钮打开“信任中心”图2-4信任中心在“信任中心”对话框中可以执行与宏的安全性相关的设置。其中有几个较重要的设置选项:受信任的位置、加载项、ActiveX设置、宏设置、受保护的视图、消息栏、文件阻止设置2.1受信任的位置受信任的位置表示此处所指定的路径是安全路径,不管如何设置宏的安全性,执行此路径下的文件都不会弹出提示“是不启用宏”或者“宏已被禁用”之类的提示。2.1预设的受信任位置Excel已经分配了一些受信任的路径,包括存放模板、存放加载项的路径,以及3个自启动路径。上图中包含默认的受信任路径。以下提供四句代码可以打开其中4个路径,将文件放到这些路径中后,打开文件就不再弹出提示(不管如何设置宏的安全性),相当于给文件开放安全通道。Subtest()'打开受信任文件夹Shell"explorer.exe"&Application.StartupPath,vbMaximizedFocusShell"explorer.exe"&Application.LibraryPath,vbMaximizedFocusShell"explorer.exe"&Application.TemplatesPath,vbMaximizedFocusShell"explorer.exe"&Application.Path&"\xlstart",vbMaximizedFocusEndSub代码中的Application代表Excel应用程序,Application.StartupPath代表用户自启动文件夹的完整路径。explorer.exe代表资源管理器,我们常用的快捷键"Win+E”键打开我的电脑,其中字母E就来自explorer.exe的首字母,表示打开资源管理器。也可以在开始菜单中打开“运行”,然后输入命令explorer.exe,单击回车键后就能打开资源理器。在VBA中,当explorer.exe命令作为Shell函数的参数时就实现了VBA代码打开资源管理器。如果在explorer.exe后面带参数(文件夹路径)那么就能打开文件夹,不过要注意explorer.exe和路径之间需要有一个空格。例如:Sub打开c盘的windows。Shell"explorer.exec:\windows\",vbMaximizedFocusEndSubShell的第二参数vbMaximizedFocus表示将打开的窗口最大化。关于Shell的详细说明可以在VBA的帮助中看到,操作方法如下:(1)使用【Alt+F11】组合键打开VBA的代码录入界面;⑵按【F1】快捷键调用VBA的帮助;⑶在顶端的查询框中录入$卜011,然后单击回键,将看到与shell相关的所有词条;(4)单击第一条“Shell函数”即可,下图是最终的帮助界面:图2-5Shell函数的帮助添加新位置“添加新位置”按钮表示设置新的路径,让Excel也信任此路径下的文件。请大家跟着我操作(以下为手动操作练习)前面的操作结果可以实现带有宏代码的文件保存在此路径后,打开时不弹出提示,不管宏的安全性如何设置,但是将文件放置在其它位置就会有提示。2.2加载项Excel的加载项是指将VBA代码封装后的文件,通常是Dll格式或者ocx格式。Excel百宝箱就是一个加载项,使用VBA开发,利用VB6.0封装成DLL格式。安装过Excel百宝箱的同学就知道,文件的外观如下图所示:ExcelEEXa88.dll图2-6Dll格式的加载项在本人的VBA入门图书《ExcelVBA程序开发自学宝典(第2版)》中第29章即为关于制作加载项的教学。“信任中心”中的加载项选项卡用于控制加载项能否自动运行。如果将“要求受信任的发布者签署应用程序加载项”打勾,那么所有加载项都会被阻止运行。图2-7禁止加载项自动运行图2-8关于加载项的安全警告当你安装了Excel百宝箱或者其它DLL格式的工具后,若发现有上图中的提示,那么表明你的信任中心有阻止加载项运行的设置。加载项选项仅对COM加载项有效,对于Xla和xlam格式的加载宏无效。通常大家在设置Excel选项时,仅仅调置“宏设置”选项卡中的项目,而忽略了加载项,所以往往会发现不管怎么调,插件总能正常运行。ActiveX设置ActiveX设置控制着ActiveX控件的可用与否。设置界面如下图:图2-9ActiveX设置当选择“禁用所有控件,并且不通知”后,那么ActiveX控件将无法使用。ActiveX控件处于“开发工具”一“插入"一“前衣6*”控件,见下图:

图2-10ActiveX控件默认选择第3项即可。宏设置宏设置对宏有效,对加载宏和加载项无效。这里所讲的宏就是大家平时所使用的VBA代码,而加载项与加载宏已经属于插件,属于工具了。图2-12宏设置宏设置选项卡中包括5项内容:禁用所有宏,并且不通知它表示打开工作簿时不允许执行其中的代码,而且也不通知用户。除非永远不打算侃用VBA,否则不要选择这一项。它的好处是彻底禁止了宏病毒,不再受任何干扰,坏处是自己的代码无法再使用。禁用所有宏,并发出通知它表示禁止执行宏代码,但是会在开启工作簿时弹出提示,用户可以根据提示选择是否让宏代码执行。选择此项的好处是安全,但比较烦人,每次打开有宏的工作簿都有提示。禁用无数字签署的所有宏事实上,每个人编的程序都没有数字签署,要使用数字签署是相当繁琐的事。所以此项一般也不选择。启用所有宏此选项表示允许任意宏代码执行,好处是方便,坏处是假设接收到有病毒代码的工作簿时也将病毒一并执行了。具体选择哪一项,可以根据需求设置。如果你较看重安全就选择“用所有宏,并发出通知”,如果你更看重便方便性,就选择“启用所有宏”。那么是否“启用所有

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论