目录

一、思路

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 FileDialogDim fso As ObjectDim arr() '存储所有word文件路径Dim brr() '存储每次遍历到的文件夹的子文件夹Dim crr() '存储所有文件夹Dim drr() '存储所有Word文件路径Dim myFolder As ObjectDim subFolder As VariantDim i As LongDim j As LongDim m As LongDim myFile As ObjectDim 后缀 As StringDim t0 As SingleDim cType As IntegerDim fName As StringDim prs As Presentationt0 = Timeri = 0: j = 0: m = 0Set fd = Application.FileDialog(msoFileDialogFolderPicker)Set fso = CreateObject("Scripting.FileSystemObject")With fd.Title = "选择主文件夹"If .Show Theni = i + 1ReDim Preserve crr(1 To i)crr(i) = .SelectedItems(1)arr = crrOn Error Resume NextDo While Err.Number = 0For j = LBound(arr) To UBound(arr)Set myFolder = fso.GetFolder(arr(j))If myFolder.subFolders.Count > 0 ThenFor Each subFolder In myFolder.subFoldersi = i + 1ReDim Preserve crr(1 To i)crr(i) = subFolder.Pathm = m + 1ReDim Preserve brr(1 To m)brr(m) = subFolder.PathNextEnd IfNextm = 0arr = brrErase brrLoopOn Error GoTo 0i = 0For 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 "*~$*" Theni = i + 1ReDim Preserve drr(1 To i)drr(i) = myFile.PathEnd IfNextNextcType = Int(Trim(InputBox("请输入生成PDF的方式:" & vbCrLf & "1:另存" & vbCrLf & "2:导出" & vbCrLf & "3:打印", "方式选择", 2)))Do While cType < 1 Or cType > 3cType = Int(Trim(InputBox("输入错误。请重新输入生成PDF的方式:" & vbCrLf & "1:另存" & vbCrLf & "2:导出" & vbCrLf & "3:打印", "方式选择", 2)))Loop'Application.ScreenUpdating = FalseFor j = LBound(drr) To UBound(drr)Rem 此处以下为调用的处理过程fName = Replace(drr(j), fso.GetExtensionName(drr(j)), "PDF")Set prs = Presentations.Open(drr(j))Select Case cTypeCase 1Call PPT另存PDF(prs, fName)Case 2Call PPT导出PDF(prs, fName)Case 3Call PPT打印PDF(prs, fName)End Selectprs.CloseRem 此处以上为调用的处理过程Debug.Print Format(j, String(Len(CStr(UBound(drr))), "0")), drr(j), "打印完成"Next'Application.ScreenUpdating = FalseEnd IfEnd WithSet fd = NothingSet fso = NothingSet myFolder = NothingSet prs = NothingDebug.Print "完成   共打印了" & UBound(drr) & "个文件   用时" & Timer - t0 & "秒"
End SubRem 此处以下为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 = ppPrintColorEnd Withprs.PrintOut printtofile: fName
End SubSub PPT导出PDF(prs As Presentation, fName As String)prs.ExportAsFixedFormat2 fName, ppFixedFormatTypePDF, ppFixedFormatIntentPrint, True, _ppPrintHandoutHorizontalFirst, ppPrintOutputSlides, includedocproperties:=True
End SubSub 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/办公自动化的问题也可以提问或者浏览我的主页的回答和文章。

PPT VBA:批量转PDF相关推荐

  1. ## 以下代码主要实现对Word PPT等批量转换为 PDF

    以下代码主要实现对Word PPT等批量转换为 PDF 可先百度查阅os库 import os import comtypes.clientdef get_path_word():pathpath = ...

  2. php 把ppt转pdf文件大小,ppt转换成pdf 怎么将ppt文件批量转换为pdf文件?ppt高质量转换pdf的方法...

    在工作上,有时候要处理多个文件,并且会涉及到各种资料文档的格式转换问题.前两天就有狸友跟小编说工作中需要将大量资料文件ppt转换成pdf格式再传输给他人.如果一个个将ppt转化为pdf的话工作量也是很 ...

  3. 用VBS代码写PPT/PPTX批量转PDF,绝对可用,本人就在用着……ppt转pdf代码

    我用的是精简的office 2007,将代码保存在TXT文件,之后将.txt改成.vbs就行.代码如下: On Error Resume Next Set ppt = CreateObject(&qu ...

  4. PowerPoint VBA批量格式转换:pptx转pdf、ppt以及反向转换

    这篇博客阅读量较大,借此为思杰马克丁做个广告. 揭露苏州小叶网络科技有限公司不齿行径  https://bbs.kafan.cn/thread-2095728-1-1.html 揭开软件行业毒瘤思杰马 ...

  5. 【摸鱼技巧一】【python】PPT批量转PDF

    文章目录 准备工作 运行效果 代码 后记 准备工作 打开电脑,打开ppt准备复习预习,为了好翻页转出PDF,但是PPT有很多章,需要批量转出. 使用的是 python3.10,office2021 安 ...

  6. vba 当前文件名_VBA实践+批量合并pdf

    VBA实践+批量合并pdf 声明:文章仅供参考,尝试,请注意备份文件. 作用:把文件夹下若干个小文档合并成一个大文档. 以下代码创建一个空白pdf文档,然后依次把文件夹下的所有小pdf文档插入到该文档 ...

  7. dataframe保存为txt_如何批量查找并修改替换 Word、PPT、Excel、PDF、TXT等文件的内容...

    概要 平时的工作中,我们避免不了与众多 Word 文件.PPT 文件.PDF 文件.TXT 等文件打交道,有时候我们需要对这些文件进行批量修改与替换内容.这里我们介绍了这样的一款工具,它可以很方便快速 ...

  8. 如何在ppt下面加入讲解内容_如何批量查找并修改替换 Word、PPT、Excel、PDF、TXT等文件的内容——我的ABC...

    概要:平时的工作中,我们避免不了与众多 Word 文件.PPT 文件.PDF 文件.TXT 等文件打交道,有时候我们需要对这些文件进行批量修改与替换内容.这里我们介绍了这样的一款工具,它可以很方便快速 ...

  9. Excel VBA批量格式转换:xlsx转pdf、xls、csv以及反向转换

    有时候需要把大量的xlsx文件另存为其它格式,比如pdf.xls.csv,或者反向转换,可以用VBA批量处理.启动Excel,按下Alt+F11,打开Microsoft Visual Basic fo ...

最新文章

  1. 倒计时1天 | 2019 AI ProCon报名通道即将关闭(附参会指南)
  2. Oracle 11g 新特性 -- 只读表(read-only table)说明
  3. placeholder在IE8中兼容性问题解决
  4. Python中使用多重继承
  5. SAP创建Web Service以及用ABAP调用
  6. mvn项目Quartz简单上手
  7. python通过手机抓取微信公众号
  8. IntelliJ IDEA 2021.1更新了好多实用功能,赶紧下载吧!
  9. Java 算法 等差数列
  10. 基于MDC300的神经网络开发
  11. Vue组件自定义事件
  12. 【原创】使用Ultra Librarian为Altium Designer 09生成元器件库
  13. python可以做哪些有趣的事作文_那些有趣的事作文500字
  14. L3_01 01背包和最小序列
  15. 【车牌识别】基于matlab APP模板匹配车牌识别(桂贵京粤苏渝)【含Matlab源码 217期】
  16. 20170919_C++面试问题记录
  17. 3D人体重建方法漫谈
  18. 记一次App异常kill分析处理
  19. 百度快速排名 24小时进前五 刷网站排名
  20. PHP unlink的使用

热门文章

  1. 斐讯n1 linux连接wifi,斐讯 N1 部署 Docker 和 OpenWRT,并利用 Hostapd 开启 Wi-Fi 热点
  2. 103.网络安全渗透测试—[权限提升篇1]—[Linux内核漏洞提权]
  3. 一键智能抠图-原理实现
  4. 安装Brat标记工具
  5. 文件十六进制编辑软件HxD Hex Editor的使用
  6. “ERROR: Could not install packages due to an OSError: [WinError 5] 拒绝访问” 问题解决办法
  7. Linux 远程联机服务(二)- Rsh服务器
  8. 乐有家携手法大大,实现租房签约数字化
  9. 华为mate9安装Fiddler证书
  10. php编辑器浅色还是深色,程序员的IDE到底是浅色主题好还是深色主题好?