11PowerPoint宏与VB实用教程.docx
《11PowerPoint宏与VB实用教程.docx》由会员分享,可在线阅读,更多相关《11PowerPoint宏与VB实用教程.docx(17页珍藏版)》请在冰豆网上搜索。
![11PowerPoint宏与VB实用教程.docx](https://file1.bdocx.com/fileroot1/2023-1/6/6a1b988c-7cc3-48cf-9050-76fe482fc85c/6a1b988c-7cc3-48cf-9050-76fe482fc85c1.gif)
11PowerPoint宏与VB实用教程
在本系列教程中我们来学习一个让我们事半功倍的Powerpoint2000的功能,那就是“宏”程序,(如果适时在Powerpoint中使用“宏”将大大提高您的工作效率,而且可以制作出很多Powerpoint固定命令无法实现的功能!
)好点击菜单“工具”—“宏”,这时Powerpoint将弹出一个快捷菜单,如图
(1)所示,在这里你可以看到一条命令“宏”,好我们点击它(快捷键“ALT+F8”),这时会弹出一个如图
(2)所示的名为:
“宏”的对话框,在这里可以看到这个对话框中有一个名为:
“myfirst”这样一个宏程序名,其实在这里可以放置很多的“宏”程序,(宏程序就是VBA程序,英文全称是:
“VisualBasicforApplication”,即面向于应用程序的VB。
),每个“宏”程序分别执行不同的自定义命令,“宏名”包含选择宏的名称,“宏框”中列出工程中的所有可用宏;“运行”按钮运行选择的宏;“取消”按钮就是关闭“宏”对话框;“跟踪”按钮就是逐行执行“myfirst”代码(然后使用功能键“F8”一行一行执行,如果你不想一步一步的执行,也可以按“F5”键从当前行执行到该宏程序的最后。
);“编辑”按钮就是打开代码窗口,并可看见选择的“myfirst”这段“宏”程序,之后我们就可以修改这个“宏”了;“创建”按钮在代码窗口中打开一个模块,以创建一个新的“宏”(提示:
如果你在图
(2)“宏名”对话框中输入一个新的名称如“MYSECOND”,那么图
(2)中“创建”按钮才可以被激活,这时点击它将可以创建一个名为“MYSECOND”这样一个宏程序了。
);“删除”按钮:
从工程中删除选择的宏;而“宏作用于”下拉菜单是设定被选中“宏”程序的作用范围;而“说明”栏是对该宏的描述,例如我在图
(2)中输入的让我记住“myfirst”这个宏完成什么工作,即一个运算乘法的“宏”。
图一
图二
示例:
下面我们具体做一个宏程序,以便大家了解“宏”的制作过程,如图
(2)所示的“宏名”中输入“myfirst”这个宏名,这时图
(2)中的“创建”按钮被激活了,点击后你会看到VB编辑器,并产生如下面所示的深蓝色的代码:
Submyfirst()
宏由lz创建,日期00-9-4。
EndSub
我们可以删掉“Submyfirst()”和“EndSub”中的这三行注释行,然后输入如下的VBA代码(深蓝色),之后点击功能键“F5”,即可得到一个如图(3)所示的输入对话框。
图(3)
Submyfirst()
Dimx,y声明两个变体变量一个是X,一个是Y
x=InputBox("请输入一个值","数值")在这里输入第一个乘数“24”,如图(3)点击“确定”按钮后执行到下一个InptuBox函数对话框。
y=InputBox("再输入一个值","数值")在这里输入另一个乘数“35”
x1=x*y让x和y相乘,并把相乘的值付给“X1”这个变量,本例中“X1”没有事先声明,乘号是以“*”表示的。
MsgBox"你的值等于"&x&"×"&y&"="&x1,vbInformation,"你好"得到如图(4)所示的对话框。
EndSub
在这个实例中我们学习了两个函数一个是“InputBox”输入框,另一个是“MsgBox”信息框,而这里的“”单引号是个注释符。
(注:
我在“myfirst”这段代码中没有放置任何的错误自陷代码。
)在“myfirst”代码中的“&”符是链接符,它可以将变量和字符串联接起来。
图(4)
其实我们将这个“宏”程序稍加修改,就可以将这个乘法的最后得值输入到一个Powerpoint文稿中的文本框里,但是首先你必须知道这个文本框的名字,如果这个文本框的名称是“TextBox20”,那么我们就可以在这里输入另一些代码了。
Submysecond()
x=InputBox("请输入一个值","数值")
y=InputBox("再输入一个值","数值")
x1=x*y
ActiveWindow.Selection.SlideRange.Shapes("TextBox20").Select
首先选定这个名为“TextBox20”的文本框。
ActiveWindow.Selection.TextRange.Text="得值:
"&x1
将被选定的文本框的值定为:
“得值:
”字符串和“X1”这个变量值。
如果将X值输入了“5”,而将另一个Y值输入了“3”,那么最后的结果是:
在Powerpoint文稿中的“TextBox20”,得到的值为:
“得值:
15”。
EndSub
注意:
以上所有的蓝色部分都是注释行。
注释行有两种方法:
在要注释的行的行首输入“”或“rem”。
通过以上实例大家可以基本上了解到“宏”就是将经常运行的工作自动化。
如果我们执行宏那么我们可以:
∙加快经常性的编辑和格式设置工作。
∙将多个命令合并成一个。
∙让对话框中的选项更容易使用。
∙将一系列复杂的工作自动化。
我们除了可以自己编写宏程序外,还可以录制“宏”,录制宏与用录音机录制音乐一样。
宏录制后,可以执行“重复”或“回放”命令。
录制“宏”时,可以用鼠标单击命令和选项,但宏录制不记录鼠标在演示文稿窗口中的移动。
例如,不能用鼠标移动插入点,也不能通过单击或拖动选定文本。
必须用键盘录制这些动作(即手工输入)。
在本节中我们来继续学习“宏”,录制“宏”程序:
录制宏与用录音机录制音乐一样,好首先点击菜单“工具”—“宏”—“录制新宏”命令,当执行完这条命令后,就会弹出一个如图
(1)
图
(1)
所示的“录制新宏”对话框,这时我们可以在“宏名”框中输入当前要录制宏的名称,好在这里输入“MY”这个名称;而“将宏保存在”下拉菜单中,可以选择一个宏要放置的Powerpoint幻灯片文稿;而“说明”框是对宏的描述。
一切搞好之后我们就可以点击“确定”按钮,之后我们就进入到录制的“宏”状态,并看到一个“停止录制”工具栏,显示的结果如后图所示
,还可以看到一个名为“停止录制”按钮,当点击这个按钮后,就可以结束当前录制的“宏”了。
现在我们就来具体演示并录制一个“宏”,首先按照上面的描述进入到录制状态,然后点击“插入”—“图片”—“来自文件”命令,然后选择一个图形文件,将这个文件插入到Powerpoint的文稿中,接着选择这个插入的图片,将当前这个图片移动到某个位置,如果觉得图片放置的位置不合适,我们可以多次调整这张图片的位置和大小,直到你认为这个图片达到最合适的位置和大小,最后当你点击“停止录制”按钮了。
之后点击键盘“ALT+F11”,就可以进入到如图
(2)所示的VBE即VB编辑器中,因为在此这前我们已经制作了两个“模块”,所以我录制的“宏”会被放置到第三个模块中,即“模块3”,如图
(2)左侧的“工程—VBAProject”中
图
(2)
以下就是我录制的“宏”程序代码,在这里可以看到有很多无用的代码,这些代码是我在调整图片位置时记录下来的,因此我们可以删除这些不需要的代码,并直接将位移量及尺寸大小的数值付给相应的代码中,这样做可以大大提高该“宏”的运行速度。
WithActiveWindow.Selection.ShapeRange
.IncrementLeft106.5
.IncrementTop-225#
EndWith
WithActiveWindow.Selection.ShapeRange
.ScaleWidth3.6,msoFalse,msoScaleFromTopLeft
.ScaleHeight3.6,msoFalse,msoScaleFromTopLeft
EndWith
WithActiveWindow.Selection.ShapeRange
.IncrementLeft96#
.IncrementTop-18#
EndWith
WithActiveWindow.Selection.ShapeRange
.ScaleWidth1.44,msoFalse,msoScaleFromBottomRight
.ScaleHeight1.44,msoFalse,msoScaleFromTopLeft
EndWith
ActiveWindow.Selection.Unselect
EndSub
如下就是我们最终修改后的“宏”程序。
Submy()
宏由lz记录,日期:
00-9-17
ActiveWindow.Selection.SlideRange.Shapes.AddPicture(FileName:
="D:
\MyDocuments\lhc_LITTEL.jpg",LinkToFile:
=msoFalse,SaveWithDocument:
=msoTrue,Left:
=338,Top:
=261,Width:
=45,Height:
=18).Select
WithActiveWindow.Selection.ShapeRange
.IncrementLeft180
.IncrementTop-250#
EndWith
WithActiveWindow.Selection.ShapeRange
.ScaleWidth4.1,msoFalse,msoScaleFromTopLeft
.ScaleHeight4.1,msoFalse,msoScaleFromTopLeft
EndWith
ActiveWindow.Selection.Unselect
EndSub
以上两段代码完成的结果是一样的,也就是说我们录制的结果是所有你操作的步骤,是一种机械记录,所以我们可以去掉不必要的代码,如果你不知道哪段代码有用,哪条代码没有用,那么你可以采用注释的方法将你认为可以注释的代码注释掉,关于如何“注释代码”请查看上一节中我们学到的内容!
至此我们基本学完了如何使用“宏”的方法。
宏程序除了可以给我们带来便利以外,还给我们带来很多的麻烦,例如有些人为了某种目的制作了一些宏病毒,如WORD中的“美丽杀”病毒,这是一种以邮件形式传播的病毒。
幸好目前以Powerpoint作为宏病毒的载体还十分少。
为了防止宏病毒Powerpoint提供了安全选项(该命令也是所有OFFICE组件的通用命令,如果在Powerpoint中修改了这里的设置,那么也会影响到其它OFFICE组件程序的“宏”设置。
),这就是:
“安全性”,好我们点击菜单“工具”—“宏”—“安全性”,会弹出一个“安全性”对话框,如图(3)所示,这里有两个标签,一个是“安全级”、另一个是“可靠来源”。
首先我们学习如何使用“安全级”标签,为了方便大家查看我使用了一个表格来显示每个单选框的含义及完成的结果。
图(3)
条件
高
中
低
未签名的宏。
自动禁用宏,并打开演示文稿。
提示用户启用或禁用宏。
没有提示,并启用宏。
可靠来源中的已签名的宏,签名有效。
自动启用宏,并打开演示文稿。
自动启用宏,并打开演示文稿。
没有提示或签名验证,并启用宏。
未知作者的已签名的宏,签名有效。
显示包含数值证书信息的对话框。
只有当用户选择了信任作者和证书发布机构后,才能启用宏。
网络管理员可以锁定可靠来源列表以防止用户向列表中添加开发者并启用宏。
显示关于证书信息的对话框。
提示用户启用或禁用宏。
用户可选择是否信任开发者和发证机构。
没有提示或签名验证,并启用宏。
由任意作者签名的宏,签名无效,可能是因为有病毒。
警告用户可能含有病毒,并自动禁用宏。
警告用户可能含有病毒,并自动禁用宏。
没有提示或签名验证,并启用宏。
由任意作者签名的宏,签名未被校验,因为公共密钥丢失或使用了不兼容的加密方法。
警告用户不能验证签名,并自动禁用宏。
警告用户不能验证签名,并提示用户启用或禁用宏。
没有提示或签名校验,并启用宏。
由任意作者签名的宏,但签名日期是在证书截止日期之后或在证书撤消之后。
警告签名已过期或已撤消,并自动禁用宏。
警告签名已过期或已撤消,并提示用户启用或禁用宏。
没有提示或签名校验,并启用宏。
“可靠来源”标签:
在这里我们可以看到一个列表框,可以列出我们信任的宏开发人员的姓名。
如果要打开或要加载的宏项中包含此列中的人员所开发的宏,则这些宏将自动启用;而“信任所有安装的加载项和模板”选择框,如果我们对加载宏或者模板不信任,我们就可以将这个对话框的对勾去除,这样每次启用Powerpoint“加载宏”的时候就会提示我们是否“启用宏”。
在本节中我们讲述了如何使用“录制宏”命令,录制宏只是机械的记录你每一步的操作,所以,录制完成之后,你最好再对录制的宏进行加工。
“录制宏”是初学VBA程序的最好方法,通过录制“宏”并查看代码,不久你将了解VBA代码的语法了。
在上节中我们学习了,如何使用“录制宏”命令,录制宏只是机械的记录你每一步的操作,所以录制完成之后,你最好再对录制的宏进行加工。
在本节中我们继续学习“宏”的一些知识,好我们点击菜单“工具”—“宏”—“Visualbasic编辑器”,快捷键“ALT+F11”,之后会弹出一个VB编辑器,简称“VBE”,如图
(1)所示,在“VBE”编辑器中有“菜单”栏如图
(1)中的①所示;“工具栏”如图
(1)中的②所示;“工程资源管理器”如图
(1)中的③所示;“属性”栏如图
(1)中的④所示;“窗体”栏或“模块”栏如图
(1)中的⑤所示。
我们可以在“VBE”中插入一个或多个“窗体”,方法是点击:
菜单“插入”—“用户窗体”,之后在“窗体”窗口中放置一些控件,如“按钮”、“列表”、“单选框”、“复选框”等ActiveX控件,然后我们双击这些控件就可以编写这些控件的程序代码了。
我们以36节中曾经使用的“乘法”的宏为例,只要稍作改变就可以变成一个带有“窗体”的“宏”程序。
图
(1)
如下代码就是我们在36节中曾经学到的那个“乘法”宏程序。
这个宏程序使用了两个INPUTBOX函数,使用户可以输入乘数和被乘数,而乘数值是使用MSGBOX得到。
下面这些代码就是我们在36节中学到的“乘法”的VBA代码。
Submyfirst()
Dimx,y声明两个变体变量一个是X,一个是Y
x=InputBox("请输入一个值","数值")在这里输入第一个乘数“24”,如图(3)点击“确定”按钮后执行到下一个InptuBox函数对话框。
y=InputBox("再输入一个值","数值")在这里输入另一个乘数“35”
x1=x*y让x和y相乘,并把相乘的值付给“X1”这个变量,本例中“X1”没有事先声明,乘号是以“*”表示的。
MsgBox"你的值等于"&x&"×"&y&"="&x1,vbInformation,"你好"’得到如图(4)所示的对话框。
EndSub
以下我们使用“窗体”的方法来制作一个计算乘法的“宏”程序。
好实战开始!
首先我们先制作一个“窗体”,进入到如图
(1)所示的“VBE”编辑器中,在“VBE”菜单中找到菜单“插入”—“用户窗体”,然后在图
(1)的“属性”栏中,即标注为:
④的地方,找到“CAPTION”属性,在其后的输入框中输入标题的名称“VBA—乘法”,将“(名称)”属性设置为:
“乘法窗体”,由于篇幅的原因我们就不再设置该控件的其它属性了。
设置的结果如图
(2)框所示。
图
(2)
插入“窗体”后,我们就可以看到一个“工具箱”浮动窗口,如图(3)所示,其实这个“工具箱”中的所有控件,就是我们曾经在讲解“工具栏”—“控件工具箱”中讲到过的控件,如果大家忘记了,可以参看以前章节中的内容。
好我们在“乘法窗体”中插入两个“标签”控件,方法是:
点击图(3)中的“标签”按钮,即①所指的按钮,之后该按钮变为“被按下”状态,将鼠标移动到已经被命名为:
“乘法窗体”这个窗体上,然后在合适的位置上点击鼠标左键,不要放开手拖动鼠标到另一个对角线上放手后,一个名为“LABEL1”的标签被画到“乘法窗体”上了,好再使用同样的方法,画一个“标签”这个标签名一定为“LABEL2”,之后我们点击“LABEL1”标签将其选中,在图
(1)中的属性对话框中找到“CAPTION”属性,将这个属性改为“数值1”,使用同样的方法将“LABEL2”标签的“CAPTION”属性设为“数值2”。
图(3)
我们在图(3)所示的“工具箱”中找到“文字框”按钮,即图(3)中②所指的按钮,在图
(1)窗体中合适的位置再画一个“文字框”,画完之后我们使用另一种方法制作一个“文字框”,注意:
在刚刚画好的“文字框”上点击鼠标左键不要放开鼠标,将这个“文字框”拖动到一个合适的位置上,之后点击键盘上的“CTRL”键不放,你会看到鼠标的指针发生了变化,变成了一个带有“加号”的箭头,这时我们将按下的鼠标左键放开,然后在将“CTRL”键放开,好窗体上又多出一个“文字框”控件。
最后我们在图
(1)的窗体中放置一个“按钮”控件,在本节中我们就不具体指出“按钮”控件了,(提示:
在图(3)中肯定能找到。
)画好“按钮”之后,将“按钮”控件的“CAPTION”属性设为“确定”,然后将这些控件的位置和大小调整得好看一些,最后将窗体的大小也调整为合适的大小,图(4)就是我们制作好的窗体。
图(4)
其实大家还可以根据自己的创意和不断的了解各“控件”的属性,作出更加漂亮的窗体。
好所有的先期准备都已经搞好了,在下一节中我们来具体学习如何为这些“窗体控件”添加VBA代码。
在本节中我们学习了如何制作一个窗体,方法十分简单只需在插入的窗体上,将“控件”画到窗体上就可以了。
在上节中我们学习了如何在“VBE”(VB编辑器)中制作一个“窗体”,方法十分简单只需在插入的“窗体”上,将“控件”画到上就可以了。
在上节中我们制作了一个名为:
“VBA—乘法”的窗体,在这个窗体上放置了两个“标签”控件、两个“文本框”控件和一个“命令按钮”控件,之后我们在“窗体”窗口中,双击窗体上“CAPTION”属性被命名为“确定”的那个“按钮”控件,这时会看到“窗体”消失了,取而代之的是一个输入“VBA”代码的窗口,并且可以看到“VBE”自动生成的两段代码(绿色),代码如下所示:
PrivateSubCommandButton1_Click()
"在这里输入相应的代码
EndSub
上面两段代码表示的是一个“事件”,即“单击”事件,当我们在这个两段代码中输入一些VBA代码后,并在“窗体”运行中,单击这个“确定”按钮,就会自动运行这个“单击”事件中的所有代码,其实“命令按钮”控件,除了“单击”事件外,MICROSOFT公司还提供了很多其他的“事件”,如“鼠标移动”、“双击”、“鼠标按下”等等。
VB编辑器根据不同的控件可以触发不同的“事件”,也就是说我们在VBE中编程是“面向对象”的编程(在VBA中所有的控件都是“对象”,每个对象都有它相应的“属性”、“方法”和“事件”。
)。
好我们在上两段“按钮单击事件”代码中输入如下代码(蓝色部分):
PrivateSubCommandButton1_Click()
Dimmytext1AsCurrency
Dimmytext2AsCurrency
DimmyAsCurrency
"以上为声明“TextBox1”、“TextBox2”和乘积“MY”三个变量为:
货币型
"我们除了可以一个一个的多行声明变量外,还可以在一行中连续声明不同类型的变量,方法是在每个变量后面加一个逗号。
"例如:
Dimmytext1,mytext2AsCurrency
mytext1=TextBox1.Value"让变量mytext1等于TextBox1控件的输入的值
mytext2=TextBox2.Value"让变量mytext2等于TextBox2控件的输入的值
my=mytext1*myt2"让TextBox1和TextBox2的值相乘
MsgBoxmytext1&"×"&mytext2&"="&my,vbInformation,"乘积得值"
"得到乘积并用“msgbox”函数显示出来。
EndSub
图
(1)
同理我们也可以通过双击的方法,设置文本框“TextBox1”和“TextBox2”两个控件的“改变”事件,即如果在“窗体”运行中,我们改变了这两个“TextBox”中的值,那么我们就会激活该“事件”代码(绿色部分)中的执行代码(蓝色部分),如下的“改变”事件代码是防止在输入“乘数”和“被乘数”时,误输入了文字而非数字而编写的,这将保障我们输入的值一定是一个数字。
PrivateSubTextBox1_Change()
IfIsNumeric(TextBox1.Value)=FalseThen
"使用“IsNumeric”函数测试"TextBox1"的值是否为一个数值,然后用条件语句“IFTHEN”判断这个值是否为“FALSE”。
TextBox1.Value="0""如果判断结果不是数值那么“TextBox1”的值将设为0值,否则直接跳出条件语句。
EndIf
EndSub
PrivateSubTextBox2_Change()
IfIsNumeric(TextBox2.Value)=FalseThen
"使用“IsNumeric”函数测试"TextBox2"的值是否为一个数值,然后用条件语句“IFTHEN”判断这个值是否为“FALSE”。
TextBox2.Value="0""如果判断结果不是数值那么“TextBox2”的值为0值,否则直接跳出条件语句。
EndIf
EndSub
在上一节中我们没有设置“TextBox1”和“TextBox2”这两个控件的初始“TEXT”属性,默认情况下,这两个“文本框”的“TEXT”属性值是空值,如果我们在没有输入任何数值的情况下,点击了“确定”按钮后,会产生“运行时错误"13"类型不匹配”这个错误,如何解决这个问题呢?
我们可以查看图
(2):
首先,点击左上角的那个“对象”下拉菜单找到“UserForm”窗体,而在右面的“事件名”下拉菜单中,找到如图
(2)所示的“Initialize”这个事件,即如果我们在VBE“标准”工具栏中点击“运行子程序/用户窗口”这个工具按钮,那么“窗体”就会自动执行“Initialize”初始化事件中的代码。
好我们点击“Initialize”这条下拉菜单,在代码窗口中马上就自动产生如下所示的“UserForm初始化事件”代码,显示的代码(绿