Word批量转PDF,宏批量转PDF

文章介绍了如何利用Word的VBA宏功能批量将Word文档转换为PDF格式。用户需要打开文档,调出VBA窗口,插入并运行提供的VB代码,选择目标文件夹,然后程序会自动将该文件夹及子文件夹下的所有Word文档转换为PDF。书签类型可根据需求选择创建。
摘要由CSDN通过智能技术生成

Word批量转PDF,很多第三方工具都可以轻松实现,一般需要付费,这里,为大家提供一个VBA实现的方法,word原生功能。

在word中使用使用宏VBA,实现批量转PDF:

1、在Word中,打开你需要处理的doc文档;

2、按住键盘ALT+F11,调出VBA窗口;

3、在出现的VBA窗口中,粘贴批量转PDF代码,完整VB代码在文末;

 

补充:没有任何宏,只看到灰色一片,需要在左边的工程里面“Normal”,展开后的“模块”节点下,鼠标右键,选择“插入-模块”,然后将代码复制进去即可。

4、把键盘光标放到任意一行代码上,按键盘F5运行;

6、运行过程中,需要选择待转PDF的word文件夹,选择导出格式 1 (带word标题)后,等待导出即可。

7、切换回doc文档窗口看效果,如报错找不到文档请忽略。

8、执行完成后,word目录下将生产.PDF文档。

第一次比较麻烦,创建之后,再使用时,可以直接搜宏,调出此命令进行批量导出。

 

完整VB代码:


   
   
  1. Rem 这里是主程序,会对主文件夹及其各级文件夹下所有Word文件执行导出操作
  2. '可以先把要操作的文件整理有一个文件夹下,以免有多余文件导出
  3. Sub 批量导出PDF主程序()
  4. Dim fd As FileDialog
  5. Dim fso As Object
  6. Dim arr() '存储每次遍历到的文件夹的子文件夹
  7. Dim brr() '临时存储每次遍历到的文件夹的子文件夹
  8. Dim crr() '存储所有文件夹
  9. Dim drr() '存储所有Word文件路径
  10. Dim myFolder As Object
  11. Dim subFolder As Variant
  12. Dim i As Long
  13. Dim j As Long
  14. Dim m As Long
  15. Dim myFile As Object
  16. Dim 后缀 As String
  17. Dim t0 As Single
  18. Dim 书签类型 As Long
  19. t0 = Timer
  20. i = 0: j = 0: m = 0
  21. Set fd = Application.FileDia log(msoFileDialogFolderPicker)
  22. Set fso = CreateObject( "Scripting.FileSystemObject")
  23. With fd
  24. .Title = "选择主文件夹"
  25. If .Show Then
  26. i = i + 1
  27. ReDim Preserve crr( 1 To i)
  28. crr(i) = .SelectedItems( 1)
  29. arr = crr
  30. 书签类型 = CLng( Trim( InputBox( "请输入书签类型:" & vbCrLf & "0--不创建书签" _
  31. & vbCrLf & "1--根据Word标题创建书签" & vbCrLf & "2--根据Word书签创建书签", "书签类型", 1)))
  32. Do While Not InStr( "012", CStr(书签类型)) > 0
  33. Select Case MsgBox( "输入不符合要求,请:" & vbCrLf & "重新输入(是)" & vbCrLf & "退出程序(否):", vbInformation + vbYesNo, "错误提示")
  34. Case vbYes
  35. 书签类型 = CLng( Trim( InputBox( "请输入书签类型:" & vbCrLf & "0--不创建书签" _
  36. & vbCrLf & "1--根据Word标题创建书签" & vbCrLf & "2--根据Word书签创建书签", "书签类型", 1)))
  37. Case vbNo
  38. Exit Sub
  39. End Select
  40. Loop
  41. On Error Resume Next
  42. Do While Err.Number = 0
  43. For j = LBound(arr) To UBound(arr)
  44. Set myFolder = fso.GetFolder(arr(j))
  45. If myFolder.subFolders.Count > 0 Then
  46. For Each subFolder In myFolder.subFolders
  47. i = i + 1
  48. ReDim Preserve crr( 1 To i)
  49. crr(i) = subFolder.Path
  50. m = m + 1
  51. ReDim Preserve brr( 1 To m)
  52. brr(m) = subFolder.Path
  53. Next
  54. End If
  55. Next
  56. m = 0
  57. arr = brr
  58. Erase brr
  59. Loop
  60. On Error GoTo 0
  61. i = 0
  62. For j = LBound(crr) To UBound(crr)
  63. ' Debug.Print j, crr(j)
  64. Set myFolder = fso.GetFolder(crr(j))
  65. For Each myFile In myFolder.Files
  66. 后缀 = fso.GetExtensionName(myFile.Path)
  67. If 后缀 Like "doc*" And Not 后缀 Like "*~$*" Then
  68. i = i + 1
  69. ReDim Preserve drr( 1 To i)
  70. drr(i) = myFile.Path
  71. End If
  72. Next
  73. Next
  74. For j = LBound(drr) To UBound(drr)
  75. Rem 此处以下为调用的处理过程
  76. Application.ScreenUpdating = False
  77. Call 导出PDF_创建书签(drr(j), 书签类型)
  78. Application.ScreenUpdating = True
  79. Rem 此处以上为调用的处理过程
  80. Debug.Print Format(j, String( Len( CStr( UBound(drr))), "0")), drr(j), "导出完成"
  81. Next
  82. End If
  83. End With
  84. Set fd = Nothing
  85. Set fso = Nothing
  86. Set myFolder = Nothing
  87. On Error Resume Next
  88. Debug.Print "完成 共导出" & UBound(drr) & "个文件为PDF 用时" & Timer - t0 & "秒"
  89. End Sub
  90. Sub 导出PDF_创建书签(文件名, 书签类型 As Long)
  91. Dim aDoc As Document
  92. Dim fso As Object
  93. Dim 文件名 1 As String
  94. Set aDoc = Documents.Open(文件名)
  95. Set fso = CreateObject( "Scripting.FileSystemObject")
  96. 文件名 1 = fso.GetBaseName(文件名)
  97. aDoc.ExportAsFixedFormat2 outputfilename:=aDoc.Path & "\" & 文件名 1 & ".PDF", _
  98. ExportFormat:=wdExportFormatPDF, CreateBookMarks:=书签类型
  99. aDoc.Close wdDoNotSaveChanges
  100. Set aDoc = Nothing
  101. Set fso = Nothing
  102. End Sub

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值