运行宏保存为xlsx文件后,宏文件转换为xlsx文件

时间:2017-09-09 10:09:15

标签: vba excel-vba xlsx xlsm excel

我希望宏将我的xlsm文件备份为xlsx格式,在保存为xlsx类型后仍保留在那里。但是,下面的编码会将现有的xlsm文件转换为xlsx文件,导致我的宏文件消失。任何避免这种情况的建议,我希望xlsx文件保存并关闭,而xlsm文件仍然存在?

Sub backup()
    Application.DisplayAlerts = False
    ThisWorkbook.saveas "C:\Users\Documents\Book1.xlsx", xlOpenXMLWorkbook
    Application.DisplayAlerts = True
End Sub

2 个答案:

答案 0 :(得分:2)

使用SaveCopyAs

Sub Test()
Dim wb As Workbook, wb2 As Workbook
Dim Path As String
Application.DisplayAlerts = False
Path = "C:\Users\" & Environ("Username") & "\Desktop\"
Set wb = ThisWorkbook
wb.SaveCopyAs (Path & "File.xlsm")
Set wb2 = Workbooks.Open(Path & "File.xlsm")
wb2.SaveAs Path & "File1.xlsx", xlOpenXMLWorkbook
wb2.Close
Application.DisplayAlerts = True
End Sub

这会将副本保存到桌面,但不会影响您正在使用的工作簿。

答案 1 :(得分:1)

ThisWorkbook解决了代码所在的工作簿。如果您要保存ActiveWorkbook,则必须将其作为ActiveWorkbook或其名称进行处理。 以xlsx格式保存ThisWorkbook后,代码无法继续运行。要执行您打算执行的操作,可以将代码放在第三个文件中,例如加载项,并从那里操作工作簿。