【问题标题】:Open, Refresh and Convert all Word document to PDF in a folder在文件夹中打开、刷新和将所有 Word 文档转换为 PDF
【发布时间】:2020-05-27 07:29:28
【问题描述】:

我是新来的,但在下面找到打开 docx、刷新(来自 Excel 的链接表),并将多个 Word 文档保存在工作正常的文件夹中。但是,我想在退出文档之前再添加一个程序来生成 PDF 格式。所以我会将 docx 和 pdf 文件放在同一个文件夹中。

搜索了很多,但仍然找不到答案。如果您能提供帮助,我们将不胜感激……

Dim MyFolder As String
Dim MyFile As String
Dim objWord As Object
Dim objDoc As Object

Set objWord = CreateObject("Word.Application")
objWord.Visible = True
MyFolder = "D:\PPM for Dashboard"
MyFile = Dir(MyFolder & "\*.docx")

    Do While MyFile <> ""
        Set objDoc = objWord.Documents.Open(FileName:=MyFolder & "\" & MyFile)
        objDoc.Save
        MyFile = Dir
    Loop

objWord.Quit
Set objWord = Nothing

【问题讨论】:

  • 您的计算机上是否有“Microsoft Print to PDF”作为可用打印机?

标签: excel vba ms-word


【解决方案1】:

word文档另存为PDF的方法是ExportAsFixedFormat。它有很多参数,参见微软的documentation,但基本上你只需要提供一个文件名。如果省略第二个参数(ExportFormat),word 将检查文件名的扩展名来决定,但是告诉 word 你想要什么是没有害处的(使用常量wdExportFormatPDF

以下例程将打开的 word doc 以 PDF 格式保存在同一个文件夹中并具有相同的名称(它假定文档本身已经保存,否则它没有有效的文件名)。

Sub saveAsPDF(wordDoc As Word.Document)
    Dim fName As String, p As Integer
    fName = wordDoc.FullName
    p = InStrRev(fName, ".")
    fName = Left(fName, p) & "pdf"
    wordDoc.ExportAsFixedFormat fName, wdExportFormatPDF
End Sub

在您现有的循环中,您只需添加对该过程的调用:

Do While MyFile <> ""
    Set objDoc = objWord.Documents.Open(FileName:=MyFolder & "\" & MyFile)
    objDoc.Save
    saveAsPDF objDoc
    objDoc.Close
    MyFile = Dir
Loop

更新:上面的代码使用了早期绑定,所以需要对 Word 对象库的引用。要使用后期绑定(就像 OP 一样),请将例程更改为:

Sub saveAsPDF(wordDoc As Object)
    Const wdExportFormatPDF = 17

    Dim fName As String, p As Integer
    fName = wordDoc.FullName
    p = InStrRev(fName, ".")
    fName = Left(fName, p) & "pdf"
    wordDoc.ExportAsFixedFormat fName, wdExportFormatPDF
End Sub

【讨论】:

  • 感谢@FunThomas 的帮助。我添加了 saveAsPDF objDoc 但是我收到“编译错误:未定义子或函数”...
  • @liu:没注意到你用的是后期绑定,试试更新版的Subroutine吧。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-25
  • 2012-08-07
  • 2019-04-14
  • 1970-01-01
  • 1970-01-01
  • 2015-03-21
  • 1970-01-01
相关资源
最近更新 更多