我们讲过《PPT与Excel交互之选择性粘贴法》,当时用的是选择粘贴法实现两者之间的数据共享。但同时我们也提到PowerPoint和Office其他格式文件交换数据最好的方法是通过VBA,只有想不到,没有做不到。因为这句话,很多朋友来信询问用VBA如何实现PPT与Excel连接。为了解答大家心中的疑问,今天我们就来讲讲用VBA的方法来实现PPT与Excel的连接。
想用Excel做一个习题库,每次简单的修改一下自动生成习题?其实,VBA可以解决这一切。下面,我讲从原理入手,不断完善这个PPT和Excel链接的题库。
原理:利用VBA后台打开Excel题库,读取对应的数据,显示到PPT中。
步骤:
第一、后台打开Excel题库
①为了让PPT中适用Excel的VBA对象属性函数,我们需要事先引用excel的对象模型。
打开PowerPoint2010→开发工具→Visual Basic→工具→引用→勾选“Microsoft Excel 14.0 Object Library”→确定。这时候,我们就能在PPT程序中适用Excel中的VBA对象属性函数了。
②代码部分。
在公共部分先声明:(这样子就产生了一个整个程序运行时都可以调用的变量了)
Dim xlApp As Excel.Application
在sub部分开始写:
Sub start()
Set xlApp = New Excel.Application '新建一个Excel程序
xlFilePath$ = ActivePresentation.Path & "/" & "xt.xls" '定义当前题库的位置
xlApp.Workbooks.Open xlFilePath, , False '后台打开Excel
End Sub
第二、读取Excel的数据
①这个部分需要对Excel的基本对象有所了解。
Excel:Application→Workbook→Sheets→Cells
备注:具体的信息可以看帮助系统的对象模型。
②代码部分。
比如,我们刚刚后台打开的xlApp的第一个工作簿第一个工作表第二行第三列的数据就可以表示为
xlApp.Workbooks(1).Sheets(1).Cells(2, 3)
第三、传达给PowerPoint
①这个部分需要对PowerPoint 的基本对象有所了解。
PowerPoint:Application→Presentation→Slides→Shapes
备注:具体的信息可以看帮助系统的对象模型。
②代码部分。
比如,我们需要将刚刚读取出来的数据显示在当前演示文稿的第一张幻灯片第2个形状(以文本形式)
ActivePresentation.Slides(1).Shapes(2).TextFrame.TextRange.Text = _
xlApp.Workbooks(1).Sheets(1).Cells(2, 3)
‘此处的“_”是连接一行代码的意思,就是说,代码太长的时候可以这样子分几行写。
第四、退出PPT放映是关闭Excel
①此处的操作目的是为了避免后台出现很多Excel的进程。
②代码部分。
xlApp.Workbooks.Close ‘关闭打开的Excel
Set xlApp = Nothing ‘清空xlApp
备注:最好把这部分的代码在OnSlideShowTerminate,这个在PowerPoint结束放映是自动运行的Sub也写一遍。
第五、我们需要更多
其实,理解了上述思路,我们就可以完成了大致的连接过程。
打开Excel→读取单元格数据→显示在PPT上面→关闭Excel
但是,利用VBA我们可以完成更多,如随机出题,判断正误,自动计分……让我们再散发一些思路,比如密码登录题库。只有想不到,没有做不到,你愿意尝试下吗?
上面操作步骤的讲解只是PPT整个效果的一部分功能性代码,大家可以下载下面这个随机出题案例《有问必答》,打开PPT后按Alt+F11查看完整代码。PPT案例中的加载密码是:zxc,其实不填写直接加载也可以。该作品效果仅限于讲PPT与Excel连接,没有做选择题、判断正误、自动计分等效果。