我正在尝试使用ThisWorkbook
在xlsx
中保存SaveCopyAs
的副本。问题是SaveCopyAs
将文件保存为启用宏的文件,xlsb
在我的情况下是不需要的,而SaveAs
执行我需要的操作,它也会关闭ThisWorkbook
是否有更简单的方法以不支持宏的格式保存并且不进行解决方法?
目前我找到的最佳解决方案是下面的代码片段,但它有点挑剔,它不会保存项目中我需要的ContentTypeProperties
,所以需要再次添加
感谢任何想法,谢谢!
Dim sPath as String
sPath = ThisWorkbook.FullName
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & sFileName & ".xlsx", 51
Application.Workbooks.Open (sPath)
Application.DisplayAlerts = True
Exit Sub
答案 0 :(得分:1)
sPath = ThisWorkbook.Path & "\" & sFileName
,不带扩展名ThisWorkbook.SaveCopyAs sPath & ".xlsm"
保存副本。Set Wb = Application.Workbooks.Open(sPath & ".xlsm")
Wb.SaveAs sPath & ".xlsx", xlOpenXMLWorkbook
Wb.Close SaveChanges:=False
因此,以下内容应该可以正常工作,并保持当前代码运行,而不会重新打开当前工作簿的副作用。
Dim sPath As String
sPath = ThisWorkbook.Path & "\" & sFileName 'no extension!
ThisWorkbook.SaveCopyAs sPath & ".xlsm"
Dim Wb As Workbook
Set Wb = Application.Workbooks.Open(sPath & ".xlsm")
Wb.SaveAs sPath & ".xlsx", xlOpenXMLWorkbook
Wb.Close SaveChanges:=False
可能您要删除xlsm
文件副本
Kill sPath & ".xlsm"
您可能希望使用Application.DisplayAlerts = False
和Application.ScreenUpdating = False
。