PPT VBA:批量转PDF

这篇具有很好参考价值的文章主要介绍了PPT VBA:批量转PDF。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、思路

1.获取文件列表

2.遍历文件列表中的文件

3.调用相应过程进生成PDF

4.完成

二、示例代码

三、补充


一、思路

1.获取文件列表

通过fso对象逐层获取主文件夹下的各层子文件夹,存入一个数组

然后遍历这个数组,获取每个文件夹下的PPT文件,存入另一个数组drr

2.遍历文件列表中的文件

遍历前面的drr,同时把拼接出导出的PDF文件的路径fName

用presentations.open()方法打开遍历的PPT文件,赋值给prs对象

3.调用相应过程进生成PDF

将打开的文件prs对象和PDF路径fName传递给另存、导出或打印的过程,生成PDF

4.完成

完成,关闭打开的DPF文件prs

二、示例代码

Rem 此处以下为主程序
Sub 批量获取文件路径()
    Dim fd As FileDialog
    Dim fso As Object
    Dim arr() '存储所有word文件路径
    Dim brr() '存储每次遍历到的文件夹的子文件夹
    Dim crr() '存储所有文件夹
    Dim drr() '存储所有Word文件路径
    Dim myFolder As Object
    Dim subFolder As Variant
    Dim i As Long
    Dim j As Long
    Dim m As Long
    Dim myFile As Object
    Dim 后缀 As String
    Dim t0 As Single
    Dim cType As Integer
    Dim fName As String
    Dim prs As Presentation
    t0 = Timer
    i = 0: j = 0: m = 0
    Set fd = Application.FileDialog(msoFileDialogFolderPicker)
    Set fso = CreateObject("Scripting.FileSystemObject")

    With fd
        .Title = "选择主文件夹"
        If .Show Then
            i = i + 1
            ReDim Preserve crr(1 To i)
            crr(i) = .SelectedItems(1)
            arr = crr

            On Error Resume Next
            Do While Err.Number = 0
                For j = LBound(arr) To UBound(arr)
                    Set myFolder = fso.GetFolder(arr(j))
                    If myFolder.subFolders.Count > 0 Then
                        For Each subFolder In myFolder.subFolders
                            i = i + 1
                            ReDim Preserve crr(1 To i)
                            crr(i) = subFolder.Path

                            m = m + 1
                            ReDim Preserve brr(1 To m)
                            brr(m) = subFolder.Path
                        Next
                    End If
                Next
                m = 0
                arr = brr
                Erase brr
            Loop
            On Error GoTo 0

            i = 0
            For j = LBound(crr) To UBound(crr)
'                Debug.Print j, crr(j)
                Set myFolder = fso.GetFolder(crr(j))
                For Each myFile In myFolder.Files
                    后缀 = fso.GetExtensionName(myFile.Path)
                    If 后缀 Like "ppt*" And Not myFile.Path Like "*~$*" Then
                        i = i + 1
                        ReDim Preserve drr(1 To i)
                        drr(i) = myFile.Path
                    End If
                Next
            Next

            cType = Int(Trim(InputBox("请输入生成PDF的方式:" & vbCrLf & "1:另存" & vbCrLf & "2:导出" & vbCrLf & "3:打印", "方式选择", 2)))
            Do While cType < 1 Or cType > 3
                cType = Int(Trim(InputBox("输入错误。请重新输入生成PDF的方式:" & vbCrLf & "1:另存" & vbCrLf & "2:导出" & vbCrLf & "3:打印", "方式选择", 2)))
            Loop
            'Application.ScreenUpdating = False
            For j = LBound(drr) To UBound(drr)
                Rem 此处以下为调用的处理过程
                fName = Replace(drr(j), fso.GetExtensionName(drr(j)), "PDF")
                Set prs = Presentations.Open(drr(j))

                Select Case cType
                    Case 1
                        Call PPT另存PDF(prs, fName)
                    Case 2
                        Call PPT导出PDF(prs, fName)
                    Case 3
                        Call PPT打印PDF(prs, fName)
                End Select

                prs.Close
                Rem 此处以上为调用的处理过程
                Debug.Print Format(j, String(Len(CStr(UBound(drr))), "0")), drr(j), "打印完成"
            Next
            'Application.ScreenUpdating = False
        End If
    End With

    Set fd = Nothing
    Set fso = Nothing
    Set myFolder = Nothing
    Set prs = Nothing

    Debug.Print "完成   共打印了" & UBound(drr) & "个文件   用时" & Timer - t0 & "秒"
End Sub

Rem 此处以下为3种生成PDF的不同方式
Sub PPT打印PDF(prs As Presentation, fName As String)
    With prs.PrintOptions
        .Collate = msoTrue
        .FitToPage = msoTrue
        .FrameSlides = msoCTrue '加边框
'        .OutputType = ppPrintOutputSixSlideHandouts
        .OutputType = ppPrintOutputSlides
        .PrintColorType = ppPrintColor
    End With
    prs.PrintOut printtofile: fName
End Sub

Sub PPT导出PDF(prs As Presentation, fName As String)
    prs.ExportAsFixedFormat2 fName, ppFixedFormatTypePDF, ppFixedFormatIntentPrint, True, _
        ppPrintHandoutHorizontalFirst, ppPrintOutputSlides, includedocproperties:=True
End Sub

Sub PPT另存PDF(prs As Presentation, fName As String)
    prs.SaveAs fName, ppSaveAsPDF, msoTriStateMixed
End Sub

三、补充

关于具体的操作方法和Word批量导出PDF的方法,请关注我之前的专栏文章

守候:Word VBA:批量转PDF且保留书签https://zhuanlan.zhihu.com/p/540316455

有其他任何VBA/办公自动化的问题也可以提问或者浏览我的主页的回答和文章。文章来源地址https://www.toymoban.com/news/detail-445483.html

到了这里,关于PPT VBA:批量转PDF的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • shell脚本-批量获取目录下所有文件的md5值、大小、inode值

    MD5的全称是Message-Digest Algorithm 5,它一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5值等同于文件的ID,它的值是唯一的。 如果文件已被修改,其MD5值将发生变化。 运行结果: 文件储存在硬盘上,硬盘的

    2024年02月09日
    浏览(29)
  • Python实现Word、Excel、PPT批量转为PDF

    今天看见了一个有意思的脚本Python批量实现Word、EXCLE、PPT转PDF文件。 因为我平时word用的比较的多,所以深有体会,具体怎么实现的我们就不讨论了,因为这个去学了也没什么提升,不然也不会当作脚本了。这里我将其放入了pyzjr库中,也方便大家进行调用。 你可以去下载p

    2024年02月10日
    浏览(43)
  • 免费批量ppt转pdf?一个方法教你完美转换

    随着科技的不断发展,电子文档的使用越来越普遍。在商业、教育和个人领域,我们经常需要将PPT文件转换为PDF格式,以便更方便地共享和存档。幸运的是,现在有许多在线工具和软件可以帮助我们轻松地完成免费批量ppt转pdf。下面将介绍一款实用的软件工具。 软件介绍:

    2024年02月12日
    浏览(34)
  • 【工具分享】批量多目录图片如何转换PDF,一次性转换多级目录批量的PDF的转换,合并,输出另存等问题

     在工作中我们经常要对图片进行批量转换PDF,由于文件量比较多,目录比较深,工作量比较大比较耗时费力,今天我们分享的主要解决以下问题: 1、单张图片的转换PDF:一张图临时转一下 2、多张图片转换成PDF:多张图单独转成PDF 3、多级目录多张图转换成PDF:多级目录多

    2024年02月10日
    浏览(32)
  • 使用VBA打印PDF文件

    使用VBA打印工作表和工作簿文件都很容易实现,但是有时需要使用VBA打印已经保存在本机的其他文件,例如PDF文件格式的账单,如果这个PDF并非由Excel生成的那么就无法使用前述方法实现。 调用Windows的Shell命令可以实现打印PDF文件。 示例代码如下。 【代码解析】 第1~9行代码

    2024年02月05日
    浏览(46)
  • 实用VBA:17.大量word文件中的文本内容进行批量替换

    在工作中可能会遇到需要对大量word文件中的文字内容进行批量替换的情况。相比excel的批量处理,个人感觉word文档中由于包含大量样式信息,批处理时总感觉有顾虑。一者担心影响了文档的格式,误修改了文档的样式,那后果……整过文档的小伙伴都懂的;二者担心批处理不

    2024年01月25日
    浏览(31)
  • 批量修改文件名-txt_word_ppt批量修改文件名

    word/excel/ppt等等批量修改文件名 批量修改文件名的方法有N多种,我的这种是比较简单的,小白也可以使用 使用windows自带的批处理脚本进行批量重命名 什么类型的文件批量修改原理都一样,这里以txt修改为例 通过py脚本快速创建文件测试,这步是创建100个txt文件,这步不重要,因为我

    2024年01月16日
    浏览(57)
  • 如何将PDF文件转换为PPT文件?

        如何将pdf转换成ppt?PDF文件作为常用的文件格式,不仅可以在教学过程中使用,还可以在营销展会、培训讲座等过程中使用。欧迪芬文件的使用,能够在一定程度上提升我们的办公效率。对于PDF文件来说,其中包含的元素非常多,比如文字、图片以及音视频等等,这些元

    2024年02月12日
    浏览(26)
  • C# ppt文件转换为pdf文件

    使用第三方插件 Office 实现转换 1.Application方式转换 2.ApplicationClass方式转换 使用第三方插件 Spire.Presentation 实现转换 使用第三方插件 Aspose.Slides 实现转换 ppt转换帮助类

    2024年02月07日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包