利用PPT2007把PPT批量转为PDF
数字办公
通过本文可以了解:
1.PowerPoint2007把PPT文档另存为PDF;
2.如何利用VBS在PPT2007的外部实现PPT文档转换成PDF;
3.文件夹选项中对指定类型的文件进行右键功能绑定;
4.目标:实现哪里有PPT哪里就可以有PDF了
提示:Office2007只要在安装一个SaveAsPDF的加载项之后,我们就可以利用Office中的具体应用来实现另存为PDF的功能(图1)。

由于在PPT中的宏机制与Word的宏机制上的差异,在Word中适用的方法,往往在PPT中并不能实现。而且最让人抓狂的是,PPT2007居然不支持录制宏的功能,我们需要通过其它方法来认识如何处理这个进程。
第一步,通过命令来实现保存为PDF的功能。经过笔者的尝试,这样的宏可以在PPT2007中完成PDF格式的保存:
Sub SAVEPDF()
ActivePresentation.ExportAsFixedFormat "c:\my.pdf", 2, 0
End Sub
只要把这个宏放置在PPT7中,运行它,就可以生成“c:\my.pdf”这个PDF文件。事实上,这一步对我们批量转换成PDF毫无帮助。
第二步,使用VBS命令来完成PPT至PDF的转换过程。这就需要我们略微了解VBS了。在使用VBS编写转换程序时,就受到第一步中方法的影响,结果努力尝试了N久也没有用,在网上查找有关此用法出错的倒有一个例子,但是问题最终没有解决。最后笔者想到,原先我们常用的方法是Save As,于是就死马当作活马医了,于是就给这个方法中加上不同的参数:
Set MyPress = pptApp.Presentations.Open( ls_file) 'Presentation 对象
MyPress.Saveas ls_new+"24", 24
MyPress.Saveas ls_new+"25", 25
....
MyPress.Saveas ls_new+"31", 31
MyPress.Saveas ls_new+"32", 32
一直从参数01试到32,奇迹出现了,下面就是为了这个尝试的中间产品(图2):

我们所需要的文件格式类型是32,微软故意通过宏的录制放了一个ExportAsFixedFormat来忽悠我们,其实Save As同样好用。这样,我们一个完整的转为PDF的VBS小程序就这样炮制出来了。
Dim ls_File
Set objArgs = WScript.Arguments'命令行参数
if objArgs.Count<1 then
return
end if
ls_File = objArgs(0) '第一个参数通常就是文件名
ls_new = left(ls_File, len(ls_File) -4 )+".pdf"
Set pptApp = CreateObject("PowerPoint.Application") '申明调用函数
pptApp.Visible = True '在使用PowerPoint时,一定要有此句,否则会出错
Set MyPress = pptApp.Presentations.Open( ls_file) 'Presentation 对象
MyPress.Saveas ls_new,32
pptApp.Quit
将此文件取名为Pdf.VBS,然后可以直接这样使用:
Pdf.vbs c:\hp04.ppt
要注意,必须要把后面相应的PPT文件全路径带上,否则会打不开相应的文件,看看效果吧,非常让人高兴,感觉就像是一个世界奇迹一样。困惑了网上那么多高手的东东,居然让它解决了。图3的出现就让人非常高兴。

第三步,把我们需要的功能绑定到相应的右键菜单上来完成我们的使命。这个实现过程是:
在资源管理器中点“工具”菜单上的“文件夹选项”,单击“文件类型”标签,在“已注册的文件类型”中找到“PPT”或者是“PPTX”类型的文件,然后在右键菜单上注册相应的转换功能,如图4所示:

最关键的就是在“用于执行操作的应用程序”里面的内容是:
G:\WINDOWS\system32\wscript.exe c:\pdf\pdf.vbs "%1"
分别表示wscript的所在,同时把pdf.vbs直接调用,"%1"其实就是传入的第1个参数,加入双引号的目的是需要考虑到全路径名中可能包含有空格的关系。
第四步,完成转换。只要找到多个PPT(如果也同样注册了PPTX,也可以包含PPTX)。然后点右键菜单中的PPT2PDF就可以了,图5是完成我们功能的使用:

这个转换过程中,PPT7实际上在调度的过程中似乎并不真正关闭,会一直转换下去,这5个文件的转换其实也挺快,然后再看看我们的成果吧(图6)。

如果你是一个一个文件打开并另存的方法来处理,需要在不同的目录下进行打开并另存,能够这么快地完成吗?如果是几十个或者是几百个PPT(PPTX)的演示文档,或者是经常要用的文档,都需要这样做的时候,如果没有这样的批量处理功能,除了抓狂我们还能干啥呢?
而且如果对于不论是同一目录还是包含子目录的转换过程中,在利用Windows操作系统的搜索功能后,只要选中相应的文档,再点右键选“PPT2PDF”即可,还有这么方便地操作吗?这也就完成了我们的目标“有PPT的地方就有PDF”。