Vba 以编程方式保存Microsoft Word文档时,如何更改文件格式?

Vba 以编程方式保存Microsoft Word文档时,如何更改文件格式?,vba,ms-word,Vba,Ms Word,我当前正在修改Microsoft Word文档,以提示用户在保存时执行某些操作 在他们选择一个答案后,我想将文档另存为不同的文件类型,特别是将其从.docm文件转换为.docx文件 Sub FileSave() Dim myQ As Integer With ActiveDocument myQ = MsgBox("Is this the Final version of this document? Clicking 'Yes' will permanently disab

我当前正在修改Microsoft Word文档,以提示用户在保存时执行某些操作

在他们选择一个答案后,我想将文档另存为不同的文件类型,特别是将其从.docm文件转换为.docx文件

 Sub FileSave()
 Dim myQ As Integer
 With ActiveDocument

    myQ = MsgBox("Is this the Final version of this document?  Clicking  'Yes' will permanently disable macros for moving issues and remove the blank final page.", vbQuestion + vbYesNo)
    If myQ = vbYes Then
      .SaveAs2 ActiveDocument.Name & ".docx"
      DeleteFinalPage
    Else
       .SaveAs2 ActiveDocument.Name
    End If

    End With

 End Sub
如您所见,这将文档保存为“DocumentNameHere.docm.docx”


我该如何处理文件名中讨厌的.docm?

要处理.docm,我会这样做

.saveAs2 left(ActiveDocument.Name,len(ActiveDocument.Name)-5)


这将去掉
ActiveDocument.Name
的最后5个字符,只留下文档名而不是扩展名

不要使用文件扩展名来表示文件类型。不要使用固定数量的字符来删除扩展-这对于老式的.doc(而不是.docm)将失败。使用InStrRev。这是为这样的事情而设计的

去掉扩展名,然后使用专门用于此目的的参数FileFormat另存为所需类型


doc.SaveAs2左(doc.Name,InStrRev(doc.Name,“.”-1),wdSaveFormat.wdFormatXMLDocument

这起作用了,但没有。我愚蠢地认为你可以改变分机,一切都会好起来的。但是,在我更改扩展名并打开新的.docx文件后,我得到了以下信息:“无法打开文件FileNameHere.docx,因为内容有问题。细节?这确实解决了我以前的问题。你们太棒了!谢谢我假设仅仅更改扩展不会修改任何使.docx和.docm不同的内部垃圾?这就是为什么我们使用文件格式来转换它?@Arcus很高兴它起了作用。您是对的-文件扩展名只是将文件与Windows中的应用程序相关联。但是,Word不允许您以与其扩展名不同的格式打开/保存文件(出于各种原因,主要是出于安全原因)