Excel VBA代码,用于将文件夹中的rtf文件批量转换为pdf文件

时间:2016-11-18 11:51:34

标签: excel vba pdf

我是VBA编码的新手,但想知道如何在excel中创建一个宏,允许我选择一个文件夹中有rtf文件,并将它们全部转换为pdf在同一个文件夹中。

感谢任何帮助。

亲切的问候

1 个答案:

答案 0 :(得分:0)

最简单的方法是使用Word打开.rtf并将其转换为PDF。 Excel旨在显示电子表格而非文档,但您可以通过引用Word对象库从Excel自动执行此操作。

使用内置的FileDialog提示您选择文件夹,并作为宏的入口点。

'Add a Reference Microsoft Word Object Library

Sub ConvertRtfToPDF()

    With Application.FileDialog(msoFileDialogFolderPicker)
        .AllowMultiSelect = False
        If .Show() Then
            ConvertFiles GetFiles(.SelectedItems(1), ".rtf")
        End If
    End With

End Sub

这是进行转换的函数,它接受一系列文件并将它们全部转换为PDF:

Sub ConvertFiles(files() As String)

    Dim wd As New Word.Application
    Dim doc As Word.Document
    Dim file As Variant

    For Each file In files
        Set doc = wd.Documents.Open(file, ReadOnly:=True)
        doc.ExportAsFixedFormat Replace(file, ".rtf", ".pdf"), 17
        doc.Close
    Next file

    wd.Quit

End Sub

在给定文件夹名称的情况下,此函数返回文件名数组:

Function GetFiles(folder As String, extension As String) As String()

    Dim files() As String
    ReDim files(0)

    file = Dir(folder & "\")
    While (file <> "")
        If Right(file, Len(extension)) = extension Then
            files(UBound(files)) = folder & "\" & file
            ReDim Preserve files(UBound(files) + 1)
        End If
        file = Dir
    Wend
    ReDim Preserve files(UBound(files) - 1)
    GetFiles = files

End Function

将所有内容粘贴到模块中并运行ConvertRtfToPDF函数,系统将提示您选择一个文件夹,它会将该文件夹中的每个.rtf转换为.pdf