利用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”形式的文件名,根据制作幻灯片时情况的不同会不同,如果制作的过程中有删减的情况,则文件名会不连续,因此如果想让保存的文件名连续可以将上面的代码稍作变更即可。
Public Sub Export_To_Image() 
Dim SaveImagePath As String         '定义文件保存路径变量 
Dim SaveImageName As String         '定义保存文件名变量 
Dim SlideObject As Slide                '定义Slide对象 
Dim i As Integer                                '定义命名序列个变量 
On Error GoTo Err_SaveErr             '如果保存错误转到Err_SaveErr标记处继续执行 
i = 0                                                     '变量i初始化 

SaveImagePath = "D:\SlidePic\"    '定义保存文件的路径为“D:\SlidePic\” 
For Each SlideObject In ActivePresentation.Slides 
'递归每一张幻灯片对象 
i = i + 1     '命名序列号递增 
        SaveImageName = i & ".jpg"    '以i的数值为文件名,从而保证文件名按顺序递增 
        SlideObject.Export SaveImagePath & SaveImageName, "jpg" 
        '导出幻灯片对象到指定路径,以指定名命名 
Next SlideObject 

Err_SaveErr:                '错误处理标记 
If Err <> 0 Then        '如果发生错误执行以下代码 
        MsgBox Err.Description    '弹出错误提示信息 
End If 
End Sub
        以上代码全部在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,如需转载请自行联系原作者





你可能感兴趣的:(利用VBA导出幻灯片为图片)