VBA脚本将.rtf文件的文件夹转换为.docx文件 - 两个小问题

时间:2013-05-13 02:10:49

标签: vba ms-word word-vba

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

  1. 我必须承认每个原始文件都是.rtf文件。当Word打开每个.rtf文件时,会出现一个对话框,要求我确认每个文件都是.rtf文件。
  2. 当我在Word中查看已转换的.docx文件时,会出现“兼容模式”标题,这表示我没有正确转换。
  3. 这些问题是否有任何修复?第一种破坏脚本的整个点,我担心第二种会导致不可预见的问题。

    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
    

1 个答案:

答案 0 :(得分: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
  3. 我猜这两个都可以设置为默认值(我被Office选项淹没并保留默认值)。