#日常办公中,有可能遇到批量转换excel/word/pptx为pdf的情况,今天小编介绍一种简易的小方法,只要安装了office办公软件就可以直接使用了,采用的是vbs后缀的脚本模式,可以实现将当前文件夹及子文件夹里的符合格式的文件按序转化为pdf文件。
- word-pdf
On Error Resume Next
' 定义PDF导出格式常量
Const wdExportFormatPDF = 17
' 创建Word应用程序对象
Set oWord = WScript.CreateObject("Word.Application")
' 创建文件系统对象
Set fso = WScript.CreateObject("Scripting.Filesystemobject")
' 获取当前文件夹
Set rootFolder = fso.GetFolder(".")
' 调用递归函数,从当前文件夹开始遍历
ConvertWordToPDF rootFolder
' 退出Word应用程序
oWord.Quit
' 释放对象
Set oWord = Nothing
' 提示转换完成
MsgBox "Word文件已全部转换为PDF格式!"
' 递归函数:遍历文件夹及其子文件夹
Sub ConvertWordToPDF(folder)
' 遍历当前文件夹中的所有文件
For Each file In folder.Files
' 检查文件扩展名是否为.doc或.docx,并且不是临时文件(以~开头)
If (LCase(Right(file.Name, 4)) = ".doc" Or LCase(Right(file.Name, 5)) = ".docx") And Left(file.Name, 1) <> "~" Then
' 打开Word文档
Set oDoc = oWord.Documents.Open(file.Path)
' 导出为PDF,文件名为原文件名(去掉扩展名)加上.pdf
oDoc.ExportAsFixedFormat Left(file.Path, InStrRev(file.Path, ".")) & "pdf", wdExportFormatPDF
' 如果发生错误,弹出错误信息
If Err.Number Then
MsgBox Err.Description
End If
' 关闭文档
oDoc.Close False
End If
Next
' 遍历当前文件夹中的所有子文件夹
For Each subFolder In folder.SubFolders
' 递归调用,处理子文件夹
ConvertWordToPDF subFolder
Next
End Sub
- excel-pdf
On Error Resume Next
' 定义PDF导出格式常量
Const xlTypePDF = 0
' 创建Excel应用程序对象
Set oExcel = WScript.CreateObject("Excel.Application")
' 创建文件系统对象
Set fso = WScript.CreateObject("Scripting.Filesystemobject")
' 获取当前文件夹
Set rootFolder = fso.GetFolder(".")
' 调用递归函数,从当前文件夹开始遍历
ConvertExcelToPDF rootFolder
' 退出Excel应用程序
oExcel.Quit
' 释放对象
Set oExcel = Nothing
' 提示转换完成
MsgBox "Excel文件已全部转换为PDF格式!"
' 递归函数:遍历文件夹及其子文件夹
Sub ConvertExcelToPDF(folder)
' 遍历当前文件夹中的所有文件
For Each file In folder.Files
' 检查文件扩展名是否为.xls或.xlsx,并且不是临时文件(以~开头)
If (LCase(Right(file.Name, 4)) = ".xls" Or LCase(Right(file.Name, 5)) = ".xlsx") And Left(file.Name, 1) <> "~" Then
' 打开Excel文件
Set oBook = oExcel.Workbooks.Open(file.Path)
' 导出为PDF,文件名为原文件名(去掉扩展名)加上.pdf
oBook.ExportAsFixedFormat xlTypePDF, Left(file.Path, InStrRev(file.Path, ".")) & "pdf"
' 如果发生错误,弹出错误信息
If Err.Number Then
MsgBox Err.Description
End If
' 关闭工作簿
oBook.Close False
End If
Next
' 遍历当前文件夹中的所有子文件夹
For Each subFolder In folder.SubFolders
' 递归调用,处理子文件夹
ConvertExcelToPDF subFolder
Next
End Sub
- pptx-pdf
On Error Resume Next ' 定义PDF导出格式常量 Const ppSaveAsPDF = 32 ' 创建PowerPoint应用程序对象 Set oPPT = WScript.CreateObject("PowerPoint.Application") ' 创建文件系统对象 Set fso = WScript.CreateObject("Scripting.Filesystemobject") ' 获取当前文件夹 Set rootFolder = fso.GetFolder(".") ' 调用递归函数,从当前文件夹开始遍历 ConvertPPTToPDF rootFolder ' 退出PowerPoint应用程序 oPPT.Quit ' 释放对象 Set oPPT = Nothing ' 提示转换完成 MsgBox "PPT文件已全部转换为PDF格式!" ' 递归函数:遍历文件夹及其子文件夹 Sub ConvertPPTToPDF(folder) ' 遍历当前文件夹中的所有文件 For Each file In folder.Files ' 检查文件扩展名是否为.ppt或.pptx,并且不是临时文件(以~开头) If (LCase(Right(file.Name, 4)) = ".ppt" Or LCase(Right(file.Name, 5)) = ".pptx") And Left(file.Name, 1) <> "~" Then ' 打开PPT文件 Set oPres = oPPT.Presentations.Open(file.Path, False, False, False) ' 导出为PDF,文件名为原文件名(去掉扩展名)加上.pdf oPres.SaveAs Left(file.Path, InStrRev(file.Path, ".")) & "pdf", ppSaveAsPDF ' 如果发生错误,弹出错误信息 If Err.Number Then MsgBox Err.Description End If ' 关闭演示文稿 oPres.Close End If Next ' 遍历当前文件夹中的所有子文件夹 For Each subFolder In folder.SubFolders ' 递归调用,处理子文件夹 ConvertPPTToPDF subFolder Next End Sub