如何在不提示用户丢失数据的情况下将XLSM文件另存为XLSX文件?

时间:2019-06-24 15:51:43

标签: excel vba

TLDR

如何使用VBA将带有宏的Excel文件另存为没有宏的Excel文件?抑制目标格式不支持宏的提示


我有一个xlsb文件(带有宏的Excel 2007+),里面是内容和应该将该文件另存为xlsx的按钮(Excel 2007 WITHOUT Macros)。到目前为止,一切都很好。我将使用ActiveWorkbook.SaveAs FileName:=name, FileFormat=xlOpenXMLWorkbook, Password="xyz"

但这总是会产生一个提示,告诉用户以目标格式保存数据意味着丢失宏数据以及他/她是否要继续...

我已经尝试过Application.DisplayAlerts = FalseThisWorkbook.CheckCompatibility = False。我还用MacroRecorder记录了相同的动作,但似乎也无法跳过即将出现的提示。

我最后的尝试是使用ThisWorkbook.Sheets.Copy复制内容并尝试删除VBProject数据。尝试了各种方法,但似乎无法真正删除vb-project数据。执行remove和类似的操作后,调试器将始终显示三项vb-project-data。

我明天会检查一下,但是看起来很像我尝试过的代码... Macro to save active Sheet as new workbook, ask user for location and remove macros from the new workbook

1 个答案:

答案 0 :(得分:1)

您可以使用

Thisworkbook.SaveCopyAs ([filename.xlsx])

这将创建工作簿的副本,其中没有宏,也没有警报。 [filename.xlsx]当然应该替换为您自己的文件路径。使用xlsx扩展名确保您不复制宏。