大家好,我们今日讲解“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演示文稿,打开它:

由以上效果可以看出,完成了我们当初的思路。

本节知识点回向:

① 本例中实现excel信息传递给PPT的思路是如何建立的?

② 本例中的代码添加标题和图表,文本有什么不同?

本讲代码参考文件:016工作表.xlsm

积木编程的思路内涵:

在我的系列书籍中一直在强调“搭积木”的编程思路,这也是学习利用VBA的主要方法,特别是职场人员,更是要采用这种方案。其主要的内涵:

1 代码不要自己全部的录入。你要做的是把积木放在合适的位置然后去修正代码,一定要拷贝,从你的积木库中去拷贝,然后修正代码,把时间利用到高效的思考上。

2 建立自己的“积木库”。平时在学习过程中,把自己认为有用的代码放在一起,多积累,在用到的时候,可以随时拿来。你的积木库资料越多,你做程序的思路就会越广。

VBA的应用界定及学习教程:

VBA是利用Office实现个人小型办公自动化的有效手段(工具)。这是我对VBA的应用界定。在取代OFFICE新的办公软件没有到来之前,谁能在数据处理方面做到极致,谁就是王者。其中登峰至极的技能非VBA莫属!

我记得20年前自己初学VBA时,那时的资料甚少,只能看源码自己琢磨,真的很难。20年过去了,为了不让学习VBA的朋友重复我之前的经历,我根据自己多年VBA实际利用经验,推出了六部VBA专门教程,目前教程均通过32位和64位两种OFFICE系统测试。

第一套:VBA代码解决方案 是VBA中各个知识点的讲解,教程共147讲,覆盖绝大多数的VBA知识点,提供的程序文件更是一座不可多得的代码宝库,是初学及中级人员必备教程;目前这套教程提供的版本是修订第二版,程序文件通过32位和64位两种OFFICE系统测试。

第二套:VBA数据库解决方案 数据库是数据处理的专业利器,教程中详细介绍了利用ADO连接ACCDB和EXCEL的方法和实例操作,适合中级人员的学习。目前这套教程提供的是修订第一版教程,程序文件通过32位和64位两种OFFICE系统测试。

第三套:VBA数组与字典解决方案 数组和字典是VBA的精华,字典是VBA代码水平提高的有效手段,值得深入的学习,是初级及中级人员代码精进的手段。目前这套教程提供的版本是修订第一版,程序文件通过32位和64位两种OFFICE系统测试。

第四套:VBA代码解决方案之视频 是专门面向初学者的视频讲解,可以快速入门,更快的掌握这门技能。这套教程是第一套教程(修订一版)的视频讲解,听元音更易接受。这套教程还会额外提供通过32位和64位两种OFFICE系统测试的程序文件。

第五套:VBA中类的解读和利用 这是一部高级教程,讲解类的虚无与肉身的度化,类的利用虽然较少,但仔细的学习可以促进自己VBA理论的提高。这套教程的领会主要是读者的领悟了,领悟一种佛学的哲理。目前这套教程提供的版本是修订第一版,程序文件通过32位和64位两种OFFICE系统测试。

第六套教程:《VBA信息获取与处理》是一部高级教程,涉及范围更广,实用性更强,面向中高级人员。教程共二十个专题,包括:跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互联网数据抓取、VBA延时操作,剪切板应用、Split函数扩展、工作表信息与其他应用交互,FSO对象的利用、工作表及文件夹信息的获取、图形信息的获取以及定制工作表信息函数等等内容。程序文件通过32位和64位两种OFFICE系统测试。

上述教程的学习顺序:1→3→2→6→5或者4→3→2→6→5。提供的程序文件更是一座巨大的代码库,供读者使用,如需要可以WeChat: NZ9668

学习VBA是个过程,也需要经历一种枯燥的感觉

“众鸟高飞尽,孤云独去闲。相看两不厌,只有敬亭山”。学习的过程也是修心的过程,修一个平静的心。在代码的世界中,心平静了,心情好了,身体自然而然就好。心静则正,内心里没有那么多邪知邪见,也就没有那么多妄想。利人就是利己。我的教程助力给正在努力的朋友。

“水善利万物而不争”,绵绵密密,微则无声,巨则汹涌。学习亦如此,知道什么是自己所需要的,不要蜷缩在一小块自认为天堂的世界里,待到暮年时再去做自欺欺人的言论。要努力提高自己,用一颗充满生机的心灵,把握现在,这才是进取。越是有意义的事情,困难会越多。愿力决定始终,智慧决定成败。不管遇到什么,都是风景。看淡纷争,看轻得失。学习时微而无声,利用时则巨则汹涌。“路漫漫其修远兮,吾将上下而求索”

每一分收获都是成长的记录,怎无凭,正是这种执着,成就了朝霞的灿烂。最后将一阙词送给致力于VBA学习的朋友,让大家感受一下学习过程的枯燥与执着:

浮云掠过,暗语无声,

唯有清风,惊了梦中啼莺。

望星,疏移北斗,

奈将往事雁同行。

阡陌人,昏灯明暗,

忍顾长亭。

多少VBA人,

暗夜中,悄声寻梦,盼却天明。

怎无凭!

分享我多年工作实际经验的成果,随喜这些有用的东西,给确实需要利用VBA的同路人。回向学习利用VBA的历历往事,不胜感慨,谨以这些文字以纪念,

分享成果,随喜正能量

怎么将hashmap的数据传递给js_将Excel数据信息传递给Powerpoint应用相关推荐

  1. Android入门之把窗口信息传递给InputDispatcher

    当窗口信息变化时,就应该把变化后的窗口信息传递给InputDispatcher,所以,从"什么时候会改变窗口信息入手",这些变化的可能有: (1) 窗口大小发生变化时: (2) 窗 ...

  2. AR涂涂乐⭐四、 获取截图、赋值给物体,将数据传递给shader

    using System.Collections; using System.Collections.Generic; using UnityEngine;public class ScreenSho ...

  3. jqgrid ajax 请求参数,如何将csrf_令牌传递给jqgrid的editurl的post参数?

    我在Django框架中使用JqGrid.这是JS:jQuery("#list").jqGrid({ url:'{% url views.manage.devicesajax %}' ...

  4. 【pytest官方文档】解读- 如何自定义mark标记,并将测试用例的数据传递给fixture函数

    在之前的分享中,我们知道可以使用yield或者return关键字把fixture函数里的值传递给test函数. 这种方法很实用,比如我在fixture函数里向数据库里插入必要的测试数据,那我就可以把相 ...

  5. 【Android RTMP】x264 图像数据编码 ( Camera 图像数据采集 | NV21 图像数据传到 Native 处理 | JNI 传输字节数组 | 局部引用变量处理 | 线程互斥 )

    文章目录 安卓直播推流专栏博客总结 一. NV21 数据传入 Native 层 二. jbyte * 数据类型 ( Java 中的 byte[] 数组传入 JNI 处理方式 ) 三. 局部引用处理 四 ...

  6. 从服务器请求文件流工具类,SpringBoot我想获取图片流,然后将图片流的数据传到服务器上...

    我想获取图片流,然后将图片流的数据传到服务器上 这行好像是获取图片流的,但是这个buffers我怎么传递给服务器 我想把buffers作为参数传给口,不知道怎么实现?ByteBuffer buffer ...

  7. echarts导入mysql数据库_Echarts最新:Django中从mysql数据库中获取数据传到echarts方式_爱安网 LoveAn.com...

    关于"Echarts"的最新内容 聚合阅读 这篇文章主要介绍了基于vue+echarts 数据可视化大屏展示的方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随 ...

  8. python echarts mysql python_Django中从mysql数据库中获取数据传到echarts方式

    尝试了几种方法,感觉过于复杂,于是自己写了一个方法. (1)首先在要绘图的页面传入从数据库中提取的参数,这一步通过views可以实现: (2)然后是页面加载完成时执行的函数ready,调用方法f; ( ...

  9. 后端把Long类型的数据传给前端,前端可能会出现精度丢失的情况,以及解决方案...

    后端把Long类型的数据传给前端,前端可能会出现精度丢失的情况.例如:201511200001725439这样一个Long类型的整数,传给前端后会变成201511200001725440. 解决方法: ...

最新文章

  1. Qmail的介绍和配置
  2. 华为配置(S3100)
  3. python中如何定义颜色_Python图像处理之颜色的定义与使用分析
  4. Flutter中的提示工具
  5. Linux实战案例(4)CentOS清除用户登录记录和命令历史方法
  6. Git本地分支版本过低导致的push错误 error: failed to push some refs to ... 及后续amend
  7. python判断文件是否打开_python如何判断一个文件是否处于打开状态?
  8. 装水体积c语言,C语言基础之--sizeof()运算符的使用以及注意
  9. WIN7与WIN10 安装
  10. Git Pull Failed:Could not read from remote repository
  11. 网易MCtalk泛娱乐科技峰会:泛娱乐的未来时代属于科技创新者
  12. 问题四十六:怎么用ray tracing画superellipsoid
  13. Android 图片处理方法大全
  14. hadoop安装及简单的使用
  15. c语言代码混淆器,代码混淆
  16. 平均数、中位数、众数,在分析中如何使用?
  17. 初学python------写一个心理测试
  18. WINCE6.0去掉桌面快捷方式
  19. VBS脚本统计红楼梦中贾宝玉出现的次数
  20. oracle- 审计日志

热门文章

  1. 飞书纷享销客CRM两者联合,使销售协同管理更高效
  2. window.print打印部分无法显示
  3. 新的任务发布平台源码
  4. java高级计算器_高级计算器[Java版]
  5. Profinet协议基础知识(三)
  6. Unity 游戏脚本
  7. 计算机毕业设计ssm文理读书分享平台8xkh2系统+程序+源码+lw+远程部署
  8. 【数值分析】Jacobi、Seidel和Sor迭代法求解线性方程组(附matlab代码)
  9. oracle dul误删数据,案例:Oracle dul数据挖掘 没有数据库备份非常规恢复truncate删除的数据表...
  10. 使用DNS来屏蔽广告