打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
[Zaoeyo作品] VBA——扩展您的动画 [详细教学]
 本帖最后由 zaoeyo 于 2011-5-5 13:31 编辑

简述:
大家可以下载使用无极的动画扩展插件,或者学习下述代码,也能少许提高PPT动画的一些效果。在一般的PowerPoint中,动画的效果可以通过右击动画窗格中的动画,展开“效果选项”选项或者“计时”选项来进行精确设置。在2007和2003版本的PPT中,效果选项有:声音设置、平滑开始或结束、翻转动画效果等,而在2010版中多了弹跳结束的设置,但是这些设置只限至于某些动画,比如路径动画,但开始和结束等动画就没有平滑开始或者平滑结束等设置,所以我们可以利用VBA强制性地添加这些效果。并且利用VBA可以实现:“鼠标接触某个物体后,物体执行某个动画”的效果! (该效果将会制作作品来详细讲解,这里先放一放)
-------------------------------------------------------------------------------------------------
VBA教程:
第一步,新建一张幻灯片,在上面画一个图形,比如一个矩形。
第二步:您需要在您的图形上添加动画代码。
通常添加动画都是直接通过右击选择“自定义动画”(2003版),或者是打开“动画”选项卡来进行设置(2007版)。我们可以用VBA代码添加一个物体的动画。
在2003版中,打开“工具”菜单中的“宏”选项中的“宏”按钮。在输入框内输入您需要的宏的名称,比如Macro,将其命名,再单击“创建”按钮,创建刚才的那个宏,然后软件会自动跳至Visual Basic编辑器。

在2007版中,打开“视图”选项卡中的“宏”按钮——在输入框内输入您需要的宏的名称,比如Macro,将其命名,再单击“创建”按钮,创建刚才的那个宏,然后软件会自动跳至Visual Basic编辑器。
在“Microsoft Visual Basic”窗口内删除所有已写好的代码,然后开始输入新的动画代码。
-------------------------------------------------------------------------------------------------
添加动画代码:
Sub add_ani()
Dim A As Slide
Dim B As Shape
Dim C As Effect
Set A = ActivePresentation.Slides(1)
Set B = A.Shapes(1)
Set C = A.TimeLine.MainSequence.AddEffect(Shape:=B, effectid:=msoAnimEffectFade, trigger:=msoAnimTriggerWithPrevious)
C.Timing.Duration = 1
C.Exit = False
End Sub
那么,您就在第一张幻灯片的第一个图形上添加了一个速度为1,开始为“之前”的淡出动画。
-------------------------------------------------------------------------------------------------
下面剖析代码:
' 在“macro”处输入你的动画名称,或者不输入,就用Macro这个名称
Sub macro()
' 现在定义3个变量,ABC分别代表幻灯片、图形和效果
Dim A As Slide
Dim B As Shape
Dim C As Effect
' 使用Set命令设定这些变量的内容
Set A = ActivePresentation.Slides(1)
' 该代码定位这个动画是在PPT中的第几页,其中1代表第“1
Set B = A.Shapes(1)
' 该代码定位您要添加动画的那个图形是第几个图形,其中“1代表第1个图形,注意,如何判别您选中的图形是第几个图形呢,首先在这个图形上通过一般方法添加一个动画,那么在动画窗格内会显示图形的名称,然后在动画上单击鼠标右键,选择“计时”命令,然后展开“触发器”按钮,单击“单击下列对象时启动效果”复选框,然后展开右边的按钮,找到刚才的那个图形的名字,数数看是第几个即可。(该方法普遍适用于任何版本的PPT
Set C = A.TimeLine.MainSequence.AddEffect(Shape:=B, effectid:=msoAnimEffectXXX, trigger:=msoAnimTriggerXXX)
' 上述代码用于设置添加的动画,其中:
effectid:=msoAnimEffectXXX,表示添加的是哪一种动画
XXX”代表动画的名称,比如渐变(淡出)动画,那么就在XXX处写上Fade,如果您想自如的添加动画,那么您需要掌握所有PPT自定义动画的英文,建议您下载一个英文版的OFFICE,或者将OFFICE的语言改为英语(没成功过)。
下面提供PPT动画的英文:


trigger:= msoAnimTriggerXXX,代表动画的“开始”设置,将XXX分别替换:
“之前”设置的代码是:WithPrevious
“单击时”设置:OnPageClick
“之后”设置:AfterPrevious
-------------------------------------------------------------------------------------------------
然后我们可以设置细微效果:
我们可以在后面输入
C.timing.duration = X
(用数字替换X代表将动画设置为多少的速度,数字越大速度越慢)
C.timing.AutoReverse = msotrue (或者msofalsemsoturemosfalse它们分别代表开启自动翻转效果和关闭自动翻转效果)
C.timing.SmoothEnd = msoture (或者msofalsemsoturemosfalse它们分别代表开启平滑结束和关闭平滑结束效果)
C.timing.SmoothStart= msoture (或者msofalsemsoturemosfalse它们分别代表开启平滑开始和关闭平滑开始效果)
C.timing.RewindAtEnd = msoture (或者msofalsemsoturemosfalse它们分别代表开启回到原始状态和关闭原始状态)
C.timing.speed = X (用数字替换X代表将动画设置为多少的速度,数字越大速度越快)
C.timing.Repeatcount = X (用数字替换X代表将动画重复多少次)
C.timing.RepeatDuration = X (用数字替换X代表将动画重复的时间)
C.Exit = true (或者“False”,它们代表该动画是进入动画还是退出动画,其中“True”代表退出动画,“False”代表进入动画。如果是强调和路径动画,比较复杂,我还没有学懂,所以不好意思无法讲解。)
End sub
(最后结束整个语句)
-------------------------------------------------------------------------------------------------
那么我们可以用这些代码制造PPT中没有的动画效果
渐变反转动画:一个物体淡入后淡出,常规设置需要两个动画,VBA只需一个动画代码:
Sub fade()
Dim a As Slide
Dim b As Shape
Dim c As Effect
Set a = ActivePresentation.Slides(1) ' the first slide
Set b = a.Shapes(1) ' shape 1 on first slide
Set c =a.TimeLine.MainSequence.AddEffect(Shape:=b, effectid:=msoAnimEffectFade, trigger:=msoAnimTriggerWithPrevious)
c.Timing.Duration = 2
c.Exit = False
c.timing.autoreverse = msotrue
End Sub
该动画的无限重复,并美化:
Sub fade_repeat()
Dim a As Slide
Dim b As Shape
Dim c As Effect
Set a = ActivePresentation.Slides(1) ' the first slide
Set b = a.Shapes(1) ' shape 1 on first slide
Set c =a.TimeLine.MainSequence.AddEffect(Shape:=b, effectid:=msoAnimEffectFade, trigger:=msoAnimTriggerWithPrevious)
With c
.Timing.Duration = 2
.Exit = False
.timing.autoreverse = msotrue
.timing.SmoothEnd = msotrue
.timing.SmoothStart = msotrue
.timing.repeatcount = 999
End With
End Sub
无限闪烁动画:
Sub spark_repeat()
Dim a As Slide
Dim b As Shape
Dim c As Effect
Set a = ActivePresentation.Slides(1) ' the first slide
Set b = a.Shapes(1) ' shape 1 on first slide
Set c =a.TimeLine.MainSequence.AddEffect(Shape:=b, effectid:=msoAnimEffectFade, trigger:=msoAnimTriggerWithPrevious)
With c
.Timing.speed = 10
.Exit = False
.timing.autoreverse = msotrue
.timing.SmoothEnd = msotrue
.timing.SmoothStart = msotrue
.timing.repeatcount = 999
End with
End Sub
-------------------------------------------------------------------------------------------------
当宏制作好后,在物体上单击鼠标右键——动作设置(2003版),或者在2007版中,打开“插入”选项卡——动作,然后将“宏”复选框勾住,然后选择对应的宏即可。
那么,我们可以选择“鼠标移过”选项卡中的“宏”效果,那么就实现了鼠标移过物体后,出现对应的动画效果了!
推荐朋友们直接新建一个幻灯片,在里面画一个矩形,然后打开VB编辑窗口,直接将蓝色的代码复制入内,然后,在矩形上单击鼠标右键——动作设置——宏——选择刚才的宏——确定——放映幻灯片看效果

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
PowerPoint的VBA设计中Shape对象运用方法初探
谈谈使用VBA控制PPT
ppt批量删除备注
批量修改ppt中所有字的字体颜色
C# 处理PPT水印(三)—— 在PPT中添加多行(平铺)文本水印效果
ExcelVBA使用Shape对象的AddPicture方法制作图片产品目录
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服