1、1例谈利用 PowerPoint 中的 VBA 制作交互式物理课件摘要:针对 PowerPoint 的强大功能,本文结合课件简谐运动的制作过程,归纳了利用 PowerPoint 中的 VBA 制作交互式物理课件的基本策略、动画实现方法与技巧。 关键词:PowerPoint;VBA;物理课件;交互性 PowerPoint 课件由于制作方便、快捷,深受大家喜爱。但绝大多数由 PowerPoint 制作的课件交互功能差、动画简单、形式呆板,成了名副其实的幻灯片,尤其是交互性强的动画模拟课件很少见到。因此,许多人错误地认为 PowerPoint 只是制作幻灯片的简单工具,功能有限,不可能制作出交互性很
2、强的课件。通过反复地思考和摸索,我们发现可以利用 PowerPoint 中的 VBA 制作出交互性很强、动感十足且符合物理运动规律的课件,下面就粗略介绍一下简谐运动课件的制作方法及关键技术。 课件制作的原理和实现的功能 1.弹簧振子做简谐运动动画的实现 弹簧振子的振动过程也就是小球的运动过程。设定一个时间间隔,只要计算出每个时间间隔后小球圆心的位置,也就知道了小球的运动轨迹。我们可以把实际问题转化为运用循环结构和简谐运动规律来计算圆心运动轨迹的过程。具体算法如下:简谐运动中弹簧振子离开平衡位置的位移 x 随时间 t 变化的函数表达式为:,弹簧振子的速度 v 随时间 t2变化的关系为:,弹簧振子
3、的加速度 a 随时间 t 变化的关系为:,其中A 为振幅, 为角速度,即,T 是振动周期,是初相位。假设振子运动的角速度 =1,初相位=0,简谐运动的函数表达式简化为:, 。运动时间 t初值为 0,输入振幅 A,计算出弹簧振子的位移 x、速度 v 和加速度 a,累加小球运动的时间 t=t+0.1,直到 t 大于所设定的时间结束。 2.课件实现的功能 点击“演示”按钮时,课件可以动态地模拟弹簧振子振动的全过程,同时绘制振动图像, “演示”按钮同时自动变为“清除”按钮,点击“清除”按钮可以清除图像;分别点击“显示位移” 、 “显示速度” 、 “显示回复力”按钮,可以动态显示位移、速度和回复力的大小
4、和方向随时间变化的矢量图,同时这些按钮自动变为“隐藏位移” 、 “隐藏速度” 、 “隐藏回复力” ,分别点击它们可以隐藏位移、速度和回复力的矢量图;文本框中输入振幅值可以改变振子的振幅 A;点击“退出”按钮可退出课件,运行效果如下图所示。 简谐运动课件的制作 1.添加对象 (1)启动 PowerPoint 2003,插入一张空白幻灯片,通过“视图/工具栏”菜单打开“绘图”和“控件工具箱”这两个工具栏。 (2)坐标的绘制。使用绘图工具栏上的箭头工具,按住 Shift 键,绘制一条自左向右的箭头作为水平时间轴,再次使用箭头工具,按住Shift 键,绘制一条从上向下的箭头作为竖直位移轴,分别右键单击
5、箭头弹出快捷菜单,选择“设置自选图形格式”命令,打开设置自选图形格3式对话框,分别在“颜色和线条、尺寸、大小”选项卡下做相应设置,点击“确定”按钮即可。再使用绘图工具栏上的文本框工具,给横轴标上“t/s” ,纵轴标上“x/m” 。 (3)小球的绘制。使用绘图工具栏上的“椭圆工具” ,按住 Shift键,绘制一个适当大小的圆形作为弹簧振子;再绘制一个直径为 1mm 的圆形作为振动图像的一个像点。 (4)弹簧的添加。先利用 Windows 附件中的画图软件制作弹簧图片,通过“插入/图片/来自文件”菜单插入弹簧图片,右键单击图片弹出快捷菜单,选择“设置自选图形格式”命令,打开设置自选图形格式对话框,
6、在“尺寸”选项卡中取消“锁定纵横比”选项,其他选项卡根据需要做相应设置。 (5)矢量图的绘制。使用绘图工具栏上的箭头工具,按住 Shift 键,绘制一条自上向下的箭头作为方向向下的位移矢量,然后复制这个箭头,右键单击箭头弹出快捷菜单,选择“设置自选图形格式”命令,打开设置自选图形格式对话框,在“尺寸”选项卡旋转选项中输入 180 度,使箭头向上。同样方法绘制速度矢量箭头和回复力矢量箭头,为了区别各矢量图可设置不同颜色代表不同的物理量。 (6)矢量标签的添加。点击菜单栏“视图/工具栏/控件工具箱”命令弹出控件工具箱,点击“标签”图标添加标签,右键单击标签,在弹出的快捷菜单中点击“属性”命令,打开
7、“属性”对话框,将“Caption”属性改为“位移” , 属性“AutoSize”改为“True” ,属性“ForeColor”改为与位移箭头相同的颜色。同理,添加“速度”和“回4复力”标签。 (7)输入文本框的添加。在控件工具箱中,点击“文本框”图标添加文本框,根据需要设置属性。再使用绘图工具栏上的文本框工具,分别在“文本框”两侧添加“振幅”和“cm”字样。 (8)按钮的添加。在控件工具箱中,点击“命令按钮”图标添加按钮,右键单击“命令按钮” ,在弹出的快捷菜单中点击“属性”命令,打开“属性”对话框,将“名称”和“Caption”属性都改为“演示” ,属性“AutoSize”改为“True”
8、 。同理,再添加 8 个“命令按钮” ,将“名称”和“Caption”属性分别改为“清除” 、 “显示位移” 、 “隐藏位移” 、“显示速度” 、 “隐藏速度” 、 “显示回复力” 、 “隐藏回复力”和“退出” ,属性“AutoSize”都改为“True” 。 通过鼠标移动这些命令按钮,分别使“演示”和“清除”按钮、 “显示位移”和“隐藏位移”按钮、 “显示速度”和“隐藏速度”按钮、 “显示回复力”和“隐藏回复力”按钮完全叠加重合。再选中所有的按钮,点击绘图工具栏上的“绘图/对齐或分布/顶端对齐”命令,可以使它们上下对齐;再次点击“绘图/对齐或分布/横向分布”命令,使它们横向等距离分布。 (9
9、)对象名称的确定。点击菜单栏“工具/宏/录制新宏”命令,打开录制新宏对话框,使用默认宏名并单击“确定”按钮,单击选定小球,单击浮动工具栏中的“停止录制”命令,结束宏录制。点击菜单栏“工具/宏/宏”命令,选中刚才录制的宏名并单击“编辑”按钮,打开 VBA编辑窗口,在代码中可以看到小球的名称为 Shapes(“Oval 8” ) 。同理,5录制振动图像的像点名称为 Shapes(“Oval 9”) ,前半周期的位移矢量名称为 Shapes(“line 10”) ,后半周期的位移矢量名称为Shapes(“line 11” ) ,前半周期的速度矢量名称为 Shapes(“line 28” ),后半周期
10、的速度矢量名称为 Shapes(“line 29”) ,前半周期的回复力矢量名称为 Shapes(“line 31”) ,后半周期的回复力矢量名称为Shapes(“line 30” ) 。 2.编写宏代码 在幻灯片中双击按钮或文本框等控件进入宏编辑窗口,并输入以下代码: Dim A As Single 定义变量 A 为单精度 Sub csjs() 通过输入文本框给振幅 A 赋值 A = Val(TextBox1.Text) End Sub Private Sub 演示_Click() 演示.Visible = False 清除.Visible = True csjs For i = 0 To
11、250 x1 = 110 y1 = A * Cos(t) 位移矢量 t = t + 0.1 Shapes(“Oval 8“).Left = x1 小球的横坐标,对象名称必须与在宏中定义的名称一致 6Shapes(“Oval 8“).Top = y1 + 215 小球的纵坐标 Shapes(“Picture 12“).Height = y1 + 215 弹簧的伸缩 Shapes(“line 10“).Height = A * Cos(t) Shapes(“line 11“).Height = -A * Cos(t) Shapes(“line 28“).Height = -A * Sin(t) S
12、hapes(“line 29“).Height = A * Sin(t) Shapes(“line 28“)Top = y1 + 215 Shapes(“line 29“).Top = y1 + 215 Shapes(“line 31“).Height = -A * Cos(t) Shapes(“line 30“).Height = A * Cos(t) With Shapes(“Oval 9“).Duplicate 复制振动图像的像点到下列坐标位置 .Left = 22 * t + 130 .Top = y1 + 220 End With T1 = Timer 控制动画速度 While Ti
13、mer - T1 0.001 :DoEvents :Wend Next SlideShowWindows(1).View.GotoSlide 1 页面刷新的语句 End Sub Private Sub 清除_Click() 清除.Visible = False 7演示.Visible = True n = Shapes.Count 统计页面上的对象数 b = 30 Dim J As Integer For J = n To b Step -1 Shapes(J).Delete 清除页面上指定的对象 T1 = Timer While Timer - T1 0.01 :DoEvents :Wend
14、 Next TextBox1.Value = 70 SlideShowWindows(1).View.GotoSlide 1 End Sub Private Sub 显示回复力_Click() 显示回复力.Visible = False 隐藏回复力.Visible = True Shapes(“line 30“).Visible = True Shapes(“line 31“).Visible = True Label4.Visible = True SlideShowWindows(1).View.GotoSlide 1 End Sub Private Sub 隐藏回复力_Click() 隐
15、藏回复力.Visible = False 8显示回复力.Visible = True Shapes(“line 30“).Visible = False Shapes(“line 31“).Visible = False Label4.Visible = False SlideShowWindows(1).View.GotoSlide 1 End Sub Private Sub 退出_Click() Application.Quit End Sub 同理, “显示速度” 、 “显示位移”按钮代码与“显示回复力”按钮代码相同, “隐藏速度” 、 “隐藏位移”按钮代码与“隐藏回复力”按钮代码相同。
16、 制作课件过程中遇到的问题及解决的方法 (1)代码中要引用有关控件或对象的名称,但是只有从“控件工具箱”中添加的控件才能在属性窗口中查到其名称,对于从绘图工具栏中绘制的各种自选图形以及“插入”菜单中插入的文本框、图片和表格等对象其名称便无从得知。获取名称的唯一方法是针对这些对象录制一段临时宏,然后在宏代码中去查找。 (2)在模拟弹簧的伸缩动画时,利用 Height 属性改变图片的高度来实现,但是 PowerPoint 默认值是锁定纵横比,弹簧伸缩时不但纵向伸缩,而且横向也在伸缩。所以,需要在弹簧图片的“尺寸”选项卡中取消“锁定纵横比”选项。 9(3)在模拟各矢量大小变化时,也是利用 Heigh
17、t 属性改变箭头的高度来实现,但是 PowerPoint 默认状态下只是矢量图的下端伸缩,而上端无变化,在需要矢量图的上端伸缩时,可以先画一个向下的箭头,再在箭头的“尺寸”选项卡旋转选项中输入 180 度,单击“确定”使箭头向上。 (4)在利用 Delete 命令清除图像时,会把绘制的像点以及后来添加的对象全部清除掉,因此,制作课件时要在程序执行 Shapes(J).Delete 命令前一次性添加好所有控件和对象,在执行 Shapes(J).Delete 命令时,J 的初始值必须大于界面上添加的所有控件和对象数。 (5)由于课件命令按钮较多,界面显得比较凌乱无序,我们采用了Visible 属性使按钮显示和隐藏交替出现,在同一位置设计两个按钮,保证界面美观有序。 (6)制作好的课件不能正常运行。为了防范宏病毒对计算机的侵害,一般情况下,在 PowerPoint 的工具菜单中对宏的安全性设置为“高”选项,这时将拒绝执行 VBA 代码。在确保 VBA 代码运行无害的前提下,需要降低 PowerPoint 的安全等级以使 VBA 代码得以执行。单击菜单栏“工具/宏/安全性”命令,打开“安全性”对话框,单击“安全级”选项卡,选择“中”或“低”选项,单击“确定”即可。
Copyright © 2018-2021 Wenke99.com All rights reserved
工信部备案号:浙ICP备20026746号-2
公安局备案号:浙公网安备33038302330469号
本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。