批量处理office文件将其转换为PDF

#日常办公中,有可能遇到批量转换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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值