user_rowej 发表于 2016-4-12 12:34:04

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

大家知道,在PPT 的前台可以在Shape对象(绘图层中的对象,例如自选图形、任意多边形、OLE 对象或图片)上点击右键,然后将之可以另存为图片。如果我们录制宏的话,会得到类似于ActivePresentation.SaveAs FileName:="C:Documents and SettingsAdministrator桌面图片1.emf", FileFormat:=ppSaveAsEMF, EmbedTrueTypeFonts:=msoFalse的代码,与文件“另存为”没有任何差别。在VBA的2003帮助中,也找不到相关的内容,却在早期的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格式导出图片,用户也可以根据需要导成其他格式
‘如果用户对导出的图片大小不满意,可自行添加两个参数ScaleWidth,ScaleHeight
myShape.Export pathName:="D:PPT中导出的图片" & i_Temp & ".gif", Filter:=ppShapeFormatGIF
Next
Next
End Sub

gfdgesew 发表于 2016-4-12 14:00:39

太帅气了,学习了!

user_qzaye 发表于 2016-4-12 14:02:18

动态PPT?先收藏一下

user_jscpf 发表于 2016-4-12 14:59:52

export后图片像素变低 有什么补救方法

user_zwamy 发表于 2016-4-12 15:48:44

Export 函数支持如下格式: bmp , dib, dwg, dxf, emf, emz, gif, htm, jpg, png, svg, svgz, tif, 或者wmf。
简单修改一下原来的错误,并把格式给为jpg的,像素应该提高了,和原来照片一样的。
[*]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格式导出图片,用户也可以根据需要导成其他格式
[*]       '如果用户对导出的图片大小不满意,可自行添加两个参数ScaleWidth,ScaleHeight
[*]       myShape.Export pathName:="D:PPT中导出的图片" & i_Temp & ".jpg", Filter:=ppShapeFormatGIF
[*]   Next
[*]NextEnd Sub

复制代码

user_wsyyodmg 发表于 2016-4-12 15:52:55

不错,虽然是将所有的Shape导出了,学习一下

user_eylok 发表于 2016-4-12 16:41:40

word 不能用,有办法么
页: [1]
查看完整版本: [分享]将PPT中的所有Shape导出成图片(VBA中隐藏的Export方法)