MS Word vba可在不转换活动文档的情况下将.docm保存为.docx



我有一个带有宏(.docm(的MS Word文档

基于许多StackOverflow帖子,我编写了一个宏,可以导出为pdf并保存为.docx

我打开/编辑.docm文档,它有一个onSave宏,可以将文档保存为.pdf格式和.docx格式,我将其分发给其他人使用。我将一直对.docm文档进行更改。

我的问题是,这样做会将活动(打开(文档从.docm转换为.docx,这样我就不再对.docm.进行更改

Sub SaveActiveDocumentAsDocx()
On Error GoTo Errhandler
If InStrRev(ActiveDocument.FullName, ".") <> 0 Then
Dim strPath As String
strPath = Left(ActiveDocument.FullName, InStrRev(ActiveDocument.FullName, ".") - 1) & ".docx"
ActiveDocument.SaveAs2 FileName:=strPath, FileFormat:=wdFormatDocumentDefault

End If
On Error GoTo 0
Exit Sub
Errhandler:
MsgBox "There was an error saving a copy of this document as DOCX. " & _
"Ensure that the DOCX is not open for viewing and that the destination path is writable. Error code: " & Err
End Sub

我找不到任何参数来阻止活动文档的这种转换;saveas";或";saveas2";

此外;saveas";命令,则不会执行原始宏中的任何附加行,因为活动文档不再包含宏。我尝试在宏中添加行以重新打开原始.docm,然后关闭.docx,但这些命令从未执行。

我希望我只是错过了一些简单的东西?

Sub SaveAMacrolessCopyOfActiveDocument()
' Charles Kenyon 2 October 2020
' Save a copy of active document as a macrofree document
'
Dim oDocument As Document
Dim oNewDocument As Document
Dim iLength As Long
Dim strName As String
Set oDocument = ActiveDocument '  - saves a copy of the active document
' Set oDocument = ThisDocument '- saves copy of code container rather than ActiveDocument
Let iLength = Len(oDocument.Name) - 5
Let strName = Left(oDocument.Name, iLength)
Set oNewDocument = Documents.Add(Template:=oDocument.FullName, DocumentType:=wdNewBlankDocument, Visible:=False)
oNewDocument.SaveAs2 FileName:=strName & ".docx", FileFormat:= _
wdFormatXMLDocument, LockComments:=False, Password:="", AddToRecentFiles _
:=True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts _
:=False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
SaveAsAOCELetter:=False, CompatibilityMode:=15
oNewDocument.Close SaveChanges:=False
' Clean up
Set oDocument = Nothing
Set oNewDocument = Nothing
End Sub

上面的代码创建并保存了一个ActiveDocument的副本,该副本具有相同的名称,但为.docx格式的文档(无宏(。.Add命令中的可见属性意味着它不会出现在屏幕上,并且由过程关闭。新文档将显示在"最近的文档"中。

相关内容

最新更新