天天看点

利用VBA导出幻灯片为图片

 PPT现在是无处不在,好处自不必多说了。PPT除了上课时演示外,有时需要将PPT的内容放到其他的一些文档中,比如Word中使用,现在的问题就来了,如果将这些幻灯片快速提取,然后放到Word中使用。

        想了很久,没找到合适的办法,最后试了下VBA,轻松搞定。

Public Sub Export_To_Image() 

Dim SaveImagePath As String         '定义文件保存路径变量 

Dim SaveImageName As String         '定义保存文件名变量 

Dim SlideObject As Slide                '定义Slide对象 

On Error GoTo Err_SaveErr             '如果保存错误转到Err_SaveErr标记处继续执行 

SaveImagePath = "D:\SlidePic\"    '定义保存文件的路径为“D:\SlidePic\” 

For Each SlideObject In ActivePresentation.Slides 

'递归每一张幻灯片对象 

        SaveImageName = SlideObject.Name & ".jpg" 

        '用幻灯片对象的名称作为保存文件的名字,“.jpg”,保存为“jpg”格式,可选bmp等其他格式 

        SlideObject.Export SaveImagePath & SaveImageName, "jpg" 

        '导出幻灯片对象到指定路径,以指定名命名 

Next SlideObject        '下一个幻灯片对象 

Err_SaveErr:                '错误处理标记 

If Err <> 0 Then        '如果发生错误执行以下代码 

        MsgBox Err.Description    '弹出错误提示信息 

End If 

End Sub

        上述代码中“ActivePresentation.Slides”表示当前幻灯片中的幻灯片集合。

        使用上面的代码最终保存的文件名会是类似于“Slide**.jpg”形式的文件名,根据制作幻灯片时情况的不同会不同,如果制作的过程中有删减的情况,则文件名会不连续,因此如果想让保存的文件名连续可以将上面的代码稍作变更即可。

Dim i As Integer                                '定义命名序列个变量 

i = 0                                                     '变量i初始化 

i = i + 1     '命名序列号递增 

        SaveImageName = i & ".jpg"    '以i的数值为文件名,从而保证文件名按顺序递增 

Next SlideObject 

        以上代码全部在Windows XP SP3+PowerPoint 2010 Beta环境下测试通过,第二部分代码执行最后的结果如下图所示。

        在Windows XP SP3下按“文件名”排序,会自动从小到大排序,印象中以前的版本会按1、10这样的顺序,如果出现这种情况而又想保证按顺序显示,可将上面的代码再稍作变更,也就是在“i”小于等于9的情况下,在前面再加个字符串“0”,这样最终保存的结果就会是01、02……、10、11这样的形式了。

     本文转自windyli 51CTO博客,原文链接:http://blog.51cto.com/windyli/304720,如需转载请自行联系原作者

继续阅读