大家好,我们今日讲解"VBA信息获取与处理"教程中第十六个专题"将Excel信息传递给Powerpoint及文本文件"的第一节"将Excel数据信息传递给Powerpoint应用",这个专题是非常实用的知识点,希望大家能掌握利用。教程会提供配套的程序文件。
大家好,在上一个专题中,我们介绍了如何将EXCEL中的数据信息传递给word,以及如何将excel的信息与word的模板文件合并成一个文件展示给用户的方法。这些应用都是在工作中利用较多的,但代码编写起来的跨度较大,需要我们掌握的知识点较多,我尽可能地把我的代码全面地提供给读者,以便大家加以选择利用。
这讲的专题是如何将Excel信息传递给Powerpoint及文本文件,同时还要介绍将文本文件传递给EXCEL的方法,通过这个专题的学习,希望大家对跨应用的VBA利用能有更加深刻的认识。
第一节 将Excel数据信息传递给Powerpoint应用Microsoft Office PowerPoint是指微软公司的演示文稿软件。用户可以在投影仪或者计算机上进行演示,也可以将演示文稿打印出来,制作成胶片,以便应用到更广泛的领域中。利用Microsoft Office PowerPoint不仅可以创建演示文稿,还可以在互联网上召开面对面会议、远程会议或在网上给观众展示演示文稿。Microsoft Office PowerPoint做出来的叫演示文稿,其格式后缀名为:ppt、pptx;或者也可以保存为:pdf、图片格式等。2010及以上版本中可保存为视频格式。演示文稿中的每一页就叫幻灯片。
这种应用在实际工作中是非常广泛的,以下会议的展示汇报都要依靠这款应用,这就需要我们把一些存放在excel中的信息导入到这款应用中。如何实现呢?我们这节就来讲解。
实现场景,我们仍是利用上一专题的数据:
当我们点击运行按钮要求把上面的数据、图表导入到EXCEL中。
1 将Excel数据信息传递给Powerpoint应用的思路分析为了实现上述的场景要求,我们可以事先保存一个ppt的模板文件,用于模板文件,当打开ppt文件后可以将指定的模板文件用于演示文稿。
然后我们开始添加幻灯片,利用的语句:.Slides.Add(1, ppLayoutTitle)或者是.Slides.Add(2, ppLayoutTextAndChart),指定添加的是题目还是文本及图表。这个时候,我们就可以按照excel中的信息添加给Powerpoint应用的各个幻灯片了。最后要关闭,清空内存。
思路是很好建立的,在书写代码的时候,还是我一贯的建议,要在理解的基础上利用,不要自己去写代码,而是修改,修正为自己需要的代码。
2 将Excel数据信息传递给Powerpoint应用的代码实现我给出实现上述思路的代码:
Sub mynz()
Dim objPPTApp As Object
Dim objPPTPresen As Object
Dim objPPTSlide As Object
strTemp = ThisWorkbook.Path& "\016M模板.pptx"
Set objPPTApp = CreateObject("Powerpoint.Application")
'Presentations.Add method msoFALSE新演示文稿不可见;msoTrue默认值在可视窗口中创建演示文稿。
Set objPPTPresen = objPPTApp.Presentations.Add(msoTrue)
objPPTApp.Visible = True
'ApplyTemplate方法:将设计模板应用于指定的演示文稿。
objPPTPresen.ApplyTemplateFilename:=strTemp
'定义两个常数参数
Const ppLayoutTitle = 1
Const ppLayoutTextAndChart = 5
Sheets("Sheet1").Select
'添加第一张幻灯片ppLayoutTitle
Set objPPTSlide = objPPTPresen.Slides.Add(1, ppLayoutTitle)
With objPPTSlide.Shapes
'Placeholders占位符对象,代表指定幻灯片上的占位符的所有Shape对象的集合。
.Placeholders(1).TextFrame.TextRange.Text = Range("B1")
.Placeholders(2).TextFrame.TextRange.Text = "以下数据是我们团队经过大量调查得到的数据,分析如下:"
End With
'添加第二张幻灯片ppLayoutTextAndChart
Set objPPTSlide = objPPTPresen.Slides.Add(2, ppLayoutTextAndChart)
With objPPTSlide.Shapes
.Placeholders(1).TextFrame.TextRange.Text = Range("B3")
.Placeholders(2).TextFrame.TextRange.Text = "前三项:" & _
Range("B5") & "," & Range("B6") & "," & Range("B7")
End With
Sheets("Sheet1").ChartObjects(1).CopyPicture
objPPTSlide.Shapes.Paste
With objPPTSlide.Shapes(4)
.Left = objPPTSlide.Shapes(3).Left
.Top = objPPTSlide.Shapes(3).Top
'Shape.ScaleWidth(Single, MsoTriState, MsoScaleFrom) Method
'Specifies a tri-state value. msoFalse为FALSE
'MsoScaleFrom指定在缩放形状时,该形状的哪一部分将保持在原有的位置。msoScaleFromTopLeft 0 形状的左上角保持在原有的位置。
.ScaleWidth 1.2, msoFalse, msoScaleFromTopLeft
End With
objPPTSlide.Shapes(3).Delete
'添加第三张幻灯片ppLayoutTextAndChart
Set objPPTSlide = objPPTPresen.Slides.Add(3, ppLayoutTextAndChart)
With objPPTSlide.Shapes
.Placeholders(1).TextFrame.TextRange.Text = Range("B22")
.Placeholders(2).TextFrame.TextRange.Text = "前三项:" & _
Range("B24") & "," & Range("B25") & "," & Range("B26")
End With
Sheets("Sheet1").ChartObjects(2).CopyPicture
objPPTSlide.Shapes.Paste
With objPPTSlide.Shapes(4)
.Left = objPPTSlide.Shapes(3).Left
.Top = objPPTSlide.Shapes(3).Top
.ScaleWidth 1.2, msoFalse, msoScaleFromTopLeft
End With
objPPTSlide.Shapes(3).Delete
'保存文件
objPPTPresen.SaveAs Filename:=ThisWorkbook.Path& "\016PPT文件.pptx"
objPPTPresen.Close
objPPTApp.Quit
Set objPPTSlide = Nothing
Set objPPTPresen = Nothing
Set objPPTApp = Nothing
MsgBox "ok!"
End Sub
代码的部分截图:
代码的讲解:
1)strTemp = ThisWorkbook.Path& "\016M模板.pptx"指定模板文件,当然也可以是模板文件的格式。
2)Set objPPTApp = CreateObject("Powerpoint.Application")后期绑定Powerpoint
3)'Presentations.Add method msoFalse新演示文稿不可见;msoTrue默认值在可视窗口中创建演示文稿。
Set objPPTPresen = objPPTApp.Presentations.Add(msoTrue)
objPPTApp.Visible = True
添加一个新的PPT文件,文稿可见。
4)'ApplyTemplate方法:将设计模板应用于指定的演示文稿。
objPPTPresen.ApplyTemplateFilename:=strTemp
将上述实现设定的模板用于打开的这个演示文件
5)Sheets("Sheet1").Select
'添加第一张幻灯片ppLayoutTitle
Set objPPTSlide = objPPTPresen.Slides.Add(1, ppLayoutTitle)
With objPPTSlide.Shapes
'Placeholders占位符对象,代表指定幻灯片上的占位符的所有Shape对象的集合。
.Placeholders(1).TextFrame.TextRange.Text = Range("B1")
.Placeholders(2).TextFrame.TextRange.Text = "以下数据是我们团队经过大量调查得到的数据,分析如下:"
End With
添加第一张幻灯片,题目是Range("B1"),南非荣是"以下数据是我们团队经过大量调查得到的数据,分析如下:"
6)Sheets("Sheet1").ChartObjects(1).CopyPicture
objPPTSlide.Shapes.Paste
向演示文稿中添加图表
7)With objPPTSlide.Shapes(4)
.Left = objPPTSlide.Shapes(3).Left
.Top = objPPTSlide.Shapes(3).Top
'Shape.ScaleWidth(Single, MsoTriState, MsoScaleFrom) Method
'Specifies a tri-state value. msoFalse为FALSE
'MsoScaleFrom指定在缩放形状时,该形状的哪一部分将保持在原有的位置。msoScaleFromTopLeft 0 形状的左上角保持在原有的位置。
.ScaleWidth 1.2, msoFalse, msoScaleFromTopLeft
End With
对于这个幻灯片中形状的设置。
3 将Excel数据信息传递给Powerpoint应用的实现效果我们点击第一个截图的运行按钮,就会生成一个新的PPT演示文稿,打开它: