0

我在 Word 2013 中使用 VBA 脚本(见下文)将 .rtf 文件的文件夹转换为 .docx 文件。它主要工作,但有两个小问题。

  1. 我必须承认每个原始文件都是一个 .rtf 文件。当 Word 打开每个 .rtf 文件时,会出现一个对话框,要求我确认每个文件都是一个 .rtf 文件。
  2. 当我在 Word 中查看转换后的 .docx 文件时,有一个“兼容模式”标题,这表明我没有正确转换。

这些问题有什么解决办法吗?第一种破坏了脚本的全部意义,恐怕第二种会导致无法预料的问题。

Sub ConvertRtfToDocx()

    Set oWord = CreateObject("Word.Application")

    With Application.FileDialog(msoFileDialogFolderPicker)
        .Title = "Select folder..."
        .Show
        myFolder = .SelectedItems.Item(1)
    End With

    myWildCard = InputBox(prompt:="Enter wild card...")

    myDocs = Dir(myFolder & "\" & myWildCard)

    While myDocs <> ""
        Debug.Print myDocs
        Set oDoc = oWord.Documents.Open(myFolder & "\" & myDocs)
        oDoc.SaveAs myFolder & "\" & Left(myDocs, Len(myDocs) - 4) & ".docx", _
            wdFormatXMLDocument
        myDocs = Dir()
    Wend
    oWord.Quit

End Sub
4

1 回答 1

2

以下代码有效。

Sub ConvertRtfToDocx()

    With Application.FileDialog(msoFileDialogFolderPicker)
        .Title = "Select folder..."
        .Show
        myFolder = .SelectedItems.Item(1)
    End With

    myWildCard = InputBox(prompt:="Enter wild card...")

    myDocs = Dir(myFolder & "\" & myWildCard)

    While myDocs <> ""
        Documents.Open FileName:=myFolder & "\" & myDocs, ConfirmConversions:=False
        ActiveDocument.SaveAs2 FileName:=myFolder & "\" & Left(myDocs, Len(myDocs) - 4) & ".docx", _
            FileFormat:=wdFormatDocumentDefault, _
            CompatibilityMode:=wdCurrent
        ActiveDocument.Close SaveChanges:=False
        myDocs = Dir()
    Wend

End Sub

我做了一些重组(例如,使用ActiveDocument而不是创建我自己的对象),但真正的改变是

  1. ConfirmConversions:=False打开_
  2. 使用该SaveAs2方法并设置FileFormat:=wdFormatDocumentDefaultCompatibilityMode:=wdCurrent

我想这两个都可以设置为默认值(我对 Office 选项感到不知所措并保留默认值)。

于 2013-05-13T09:27:40.857 回答