我希望宏将我的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
答案 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
后,代码无法继续运行。要执行您打算执行的操作,可以将代码放在第三个文件中,例如加载项,并从那里操作工作簿。