使用 VBA 将包含 Excel 文件 (.xlsm) 的宏保存为不包含宏的文件 (.xlsx) 时抑制对话框

Posted

技术标签:

【中文标题】使用 VBA 将包含 Excel 文件 (.xlsm) 的宏保存为不包含宏的文件 (.xlsx) 时抑制对话框【英文标题】:Suppress dialog when using VBA to save a macro containing Excel file (.xlsm) as a non macro containing file (.xlsx) 【发布时间】:2013-10-11 22:15:08 【问题描述】:

如何取消显示“如果以这种格式保存文件,将删除 Visual Basic 宏。确定要使用这种格式吗?”的对话框。 (见下图)。

本质上,我正在尝试使用宏将 .xlsm 文件另存为 .xslx 文件?我已经尝试了所有我能找到的对话抑制代码,但它不起作用。

这是我的代码:

Private Sub SaveWithNoMacros()
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Application.EnableEvents = False
    ActiveWorkbook.SaveAs Filename:="Clean Workbook With No Macros.xlsx", _  
       FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
    Application.EnableEvents = True
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
 End Sub

这是对话框:

正如您想象的那样,我需要转换很多工作簿并且不希望手动执行此操作。

-D.

【问题讨论】:

here 的任何答案都有效吗?我最近有一个非常相似的情况。可能是 OS:X 处理此问题的方式与用于显示警报的窗口不同。 @enderland,好建议。没想过将工作表复制到新的/干净的工作簿然后保存。这有点骇人听闻,但我可能只是实现它。再次感谢。 【参考方案1】:

Application.DisplayAlerts = False 是禁用此对话框的正确语句。但是,正如您所经历的,这在 Excel 2011 上不起作用。遗憾的是,当您使用 Excel 2011 时,无法解决这个问题。如果您使用任何其他版本(在 PC 上),它会工作得很好。

【讨论】:

我可能应该在我最初的问题中提到我使用的是 Mac (Excel 2011)。【参考方案2】:

这对我有用

另存为类型:(选择 =>)启用宏的 Excel 工作簿 (*.xlsm)

【讨论】:

以上是关于使用 VBA 将包含 Excel 文件 (.xlsm) 的宏保存为不包含宏的文件 (.xlsx) 时抑制对话框的主要内容,如果未能解决你的问题,请参考以下文章

用VBA代码打开其他excel工作簿(有打开密码的)???

我的工作表的 A 列中有一个 excel 文件名列表,我想使用 VBA 从文件名中删除 .xls 和 .xlsm 标记。如何?

excel 用vba给某个excel.xls文件添加密码 怎么写啊,不要保护工作簿或者工作表,只是加密码而已

使用VBA批量转换Excel格式,由.xls转换成.xlsx

Excel 怎样在VBA中打开带有密码的excel文件

VBA中如何打开一个文件夹内的所有EXCEL文件?