利用PPT2007把PPT批量转为PDF

数字办公

通过本文可以了解:

1.PowerPoint2007把PPT文档另存为PDF;

2.如何利用VBS在PPT2007的外部实现PPT文档转换成PDF;

3.文件夹选项中对指定类型的文件进行右键功能绑定;

4.目标:实现哪里有PPT哪里就可以有PDF了

提示:Office2007只要在安装一个SaveAsPDF的加载项之后,我们就可以利用Office中的具体应用来实现另存为PDF的功能(图1)。

52-数字办公001.jpg
图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):

52-数字办公002.jpg
图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的出现就让人非常高兴。

52-数字办公003.jpg
图3

第三步,把我们需要的功能绑定到相应的右键菜单上来完成我们的使命。这个实现过程是:

在资源管理器中点“工具”菜单上的“文件夹选项”,单击“文件类型”标签,在“已注册的文件类型”中找到“PPT”或者是“PPTX”类型的文件,然后在右键菜单上注册相应的转换功能,如图4所示:

52-数字办公004.jpg
图4

最关键的就是在“用于执行操作的应用程序”里面的内容是:

G:\WINDOWS\system32\wscript.exe c:\pdf\pdf.vbs "%1"

分别表示wscript的所在,同时把pdf.vbs直接调用,"%1"其实就是传入的第1个参数,加入双引号的目的是需要考虑到全路径名中可能包含有空格的关系。

第四步,完成转换。只要找到多个PPT(如果也同样注册了PPTX,也可以包含PPTX)。然后点右键菜单中的PPT2PDF就可以了,图5是完成我们功能的使用:

52-数字办公005.jpg
图5

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

52-数字办公006.jpg
图6

如果你是一个一个文件打开并另存的方法来处理,需要在不同的目录下进行打开并另存,能够这么快地完成吗?如果是几十个或者是几百个PPT(PPTX)的演示文档,或者是经常要用的文档,都需要这样做的时候,如果没有这样的批量处理功能,除了抓狂我们还能干啥呢?

而且如果对于不论是同一目录还是包含子目录的转换过程中,在利用Windows操作系统的搜索功能后,只要选中相应的文档,再点右键选“PPT2PDF”即可,还有这么方便地操作吗?这也就完成了我们的目标“有PPT的地方就有PDF”。