PowerPoint中用VBA实现Flash动画的快速插入

更新时间:2023-10-11 06:43:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

PowerPoint中用VBA实现Flash动画的快速插入

摘 要: 由于利用PowerPoint提供的插入控件的方法来插入Flash动画比较复杂,本文利用VBA的强大功能,通过Win32 API调用Windows内置的对话框实现了Flash动画插入操作的自动化,提高了工作效率。

关键词:PowerPoint;VBA;Flash;宏 中图分类号:TP311文献标识码:B 文章编号:1673-8454(2008)20-0056-02

一、问题的提出

在PowerPoint中插入Flash动画能极大地增加课件的感染力,丰富课件的表现力。在PowerPoint中插入Flash动画的一般方法是选择菜单“工具→控件工具箱→其它控件→Shockwave Flash Object”,再用十字光标在当前幻灯片中拖出一个矩形区域,右击该对象以后选择属性,然后在地址栏位置输入Flash动画文件的文件名与扩展名,这种方法实现起来比较复杂,容易忘记操作步骤,而且还要输入英文状态下的Flash动画文件的文件名与扩展名。不太方便。我们可以

借助于Visual Basic for Application(VBA)来解决这个问题。VBA是Office套件的一部分,它提供了一个基本的编程环境和功能强大的接口,通过VBA编程,可以使Flash动画插入的步骤非常简单,就像在PowerPoint中插入一张图片一样方便。

二、基本思路

利用VBA编程,通过Win32 API调用Windows内置的对话框来实现Flash动画文件的打开,使用GetOpenFileName自动获取Flash动画文件的文件名,由于此时获取的文件名是带有路径的,利用Dir函数去掉文件的路径,编程在当前幻灯片上自动插入一个ShockwaveFlash控件,将动画文件名赋给ShockwaveFlash控件的Movie属性,从而实现了在PowerPoint中插入Flash动画。

若在其它电脑上实现同样的功能,可以将宏代码保存成“加载宏”的形式。只需将“加载宏”文件复制到该电脑中,就可以通过“工具”菜单下的“加载宏”来实现Flash动画的插入。所有代码与操作均在Windows XP操作系统、Office 2003办公软件中测试通过。

三、输入VBA程序

在PowerPoint下新建一个幻灯片文件,然后依次选择菜单“工具”→“宏”→“Visual Basic 编辑器”,如图1所示,在“Microsoft Visual Basic”窗口下再单击菜单“插入”→“模块”,在当前工程下添加一个模块,进入VBA编辑环境,将下列VBA代码复制到右侧编辑窗口中。

Declare Function GetOpenFileName Lib \Alias _

\As Long

Type openfilename lstructsize As Long hwndowner As Long hinstance As Long lpstrfilter As String lpstrcustomfilter As String nmaxcustfilter As Long nfilterindex As Long lpstrfile As String nmaxfile As Long lpstrfiletitle As String

nmaxfiletitle As Long lpstrinitialdir As String lpstrtitle As String flags As Long nfileoffset As Integer nfileextension As Integer lpstrdefext As String lcustdata As Long lpfnhook As Long lptemplatename As String End Type

Sub InsertFlash()

Dim OpenFile As openfilename Dim fname As String

OpenFile.lstructsize = Len(OpenFile) OpenFile.lpstrfilter = \ OpenFile.lpstrfile = Space(254) OpenFile.nmaxfile = 255

OpenFile.lpstrfiletitle = Space(254) OpenFile.nmaxfiletitle = 255 OpenFile.lpstrinitialdir = \

OpenFile.lpstrtitle = \ OpenFile.flags = 0

fname = GetOpenFileName(OpenFile) If fname >= 1 Then fname = OpenFile.lpstrfile fname = Dir(fname, vbNormal) ActiveWindow.Selection.Slide Range.Shapes.AddOLEObject(_

Left:=200#, Top:=200#, Width:=200#, Height:=200#, _ ClassName:=\Link:=msoFalse).Select

Set swfObject = ActiveWindow.Selection._ SlideRange.Shapes(\Flash1\ swfObject.Movie = fname swfObject.Playing = True Else

MsgBox \ End If End Sub

Sub auto_open()

本文来源:https://www.bwwdw.com/article/rdkf.html

Top