ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 17676|回复: 14

[分享]将PPT中的所有Shape导出成图片(VBA中隐藏的Export方法)

[复制链接]

TA的精华主题

TA的得分主题

发表于 2007-5-24 08:37 | 显示全部楼层 |阅读模式

大家知道,在PPT 的前台可以在Shape对象(绘图层中的对象,例如自选图形、任意多边形、OLE 对象或图片)上点击右键,然后将之可以另存为图片。如果我们录制宏的话,会得到类似于ActivePresentation.SaveAs FileName:="C:\Documents and Settings\Administrator\桌面\图片1.emf", FileFormat:=ppSaveAsEMF, EmbedTrueTypeFonts:=msoFalse的代码,与文件“另存为”没有任何差别。在VBA2003帮助中,也找不到相关的内容,却在早期的2002版的帮助中,可以看到Shape对象有Export方法,可遗憾的是微软莫明其妙的没有对这个方法做任何的说明。

我们可以使用Export方法将Shape对象以图形格式导出,下面的示例代码将演示文稿中的所有Shape导出到“D:\PPT中导出的图片\”中,希望对需要的朋友有所帮助,也希望论坛中的高手对此贴的错漏加以辅正。

Sub SaveShape()

  Dim mySlide As Slide

  Dim myShape As Shape, i_Temp As Integer

  On Error Resume Next

  MkDir "D:\PPT中导出的图片\"    创建文件夹

  For Each mySlide In ActivePresentation.Slides

     For Each myShape In mySlide.Shapes

       i_Temp = i_Temp + 1

       gif格式导出图片,用户也可以根据需要导成其他格式

       如果用户对导出的图片大小不满意,可自行添加两个参数ScaleWidthScaleHeight

       myShape.Export pathName:="D:\PPT中导出的图片\" & i_Temp & ".gif", Filter:=ppShapeFormatGIF

     Next

  Next

End Sub

TA的精华主题

TA的得分主题

发表于 2009-9-23 17:27 | 显示全部楼层
太帅气了,学习了!

TA的精华主题

TA的得分主题

发表于 2012-5-9 17:12 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2014-5-28 14:00 | 显示全部楼层
export后图片像素变低 有什么补救方法

TA的精华主题

TA的得分主题

发表于 2014-5-29 15:55 | 显示全部楼层
Export 函数支持如下格式: bmp , dib, dwg, dxf, emf, emz, gif, htm, jpg, png, svg, svgz, tif, 或者wmf。
简单修改一下原来的错误,并把格式给为jpg的,像素应该提高了,和原来照片一样的。
  1. Sub SaveShape()
  2.   Dim mySlide As Slide
  3.   Dim myShape As Shape, i_Temp As Integer
  4.   On Error Resume Next
  5.   MkDir "D:\PPT中导出的图片" '创建文件夹
  6.   For Each mySlide In ActivePresentation.Slides
  7.      For Each myShape In mySlide.Shapes
  8.        i_Temp = i_Temp + 1
  9.        '以gif格式导出图片,用户也可以根据需要导成其他格式
  10.        '如果用户对导出的图片大小不满意,可自行添加两个参数ScaleWidth,ScaleHeight
  11.        myShape.Export pathName:="D:\PPT中导出的图片" & i_Temp & ".jpg", Filter:=ppShapeFormatGIF
  12.      Next
  13.   Next
  14. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2015-3-15 22:55 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2015-12-15 08:06 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2016-6-25 21:40 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
banjinjiu 发表于 2014-5-29 15:55
Export 函数支持如下格式: bmp , dib, dwg, dxf, emf, emz, gif, htm, jpg, png, svg, svgz, tif, 或者wmf ...

1、你这个和楼主有啥不一样,除了格式?

2、无论导出的是哪种格式,其Filter:=ppShapeFormatGIF 这句的最后三个字母都是GIF么??

TA的精华主题

TA的得分主题

发表于 2016-7-24 11:52 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2020-2-1 10:16 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-12-4 01:12 , Processed in 0.047594 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表