如何修改VBA代码将带宏工作簿另存为非宏启用.xlsx文件?
解决方案:将VBA保存格式改为普通.xlsx
要将文件保存为无宏的.xlsx格式,需要对原代码做两处关键修改:
- 给
SaveAs方法指定文件格式参数,明确指定保存为普通Excel工作簿 - 修正文件名拼接逻辑,避免原宏工作簿的
.xlsm后缀被带入新文件名
修改后的完整代码
Sub SaveToDesktop() Application.ScreenUpdating = False Application.DisplayAlerts = False Dim targetPath As String Dim fileNameWithoutExt As String ' 提取不带后缀的原工作簿名称 fileNameWithoutExt = Left(ActiveWorkbook.Name, InStrRev(ActiveWorkbook.Name, ".") - 1) ' 拼接完整的目标保存路径(手动添加.xlsx后缀) targetPath = "W:\Logistics\Distribution\Chep\Chep Dehire Master Control\In\" & _ Format(Now, "hh-nn-ss-dd-mm-yyyy") & " " & fileNameWithoutExt & ".xlsx" With ActiveWorkbook ' 指定FileFormat为xlOpenXMLWorkbook,对应无宏的xlsx格式 .SaveAs Filename:=targetPath, FileFormat:=xlOpenXMLWorkbook '.Close End With Application.DisplayAlerts = True Application.ScreenUpdating = True MsgBox "Thanks, file saved." Application.Quit End Sub
关键修改说明
指定文件格式:
普通.xlsx对应的VBA格式常量是xlOpenXMLWorkbook(数值为51),必须在SaveAs中显式声明,否则会默认沿用原工作簿的宏启用格式(.xlsm)。修正文件名:
原代码直接使用ActiveWorkbook.Name会包含原文件的.xlsm后缀,导致新文件名出现xxx.xlsm.xlsx的错误格式。通过InStrRev找到最后一个.的位置,截取前面的部分得到纯文件名,再手动添加.xlsx后缀即可解决。静默提示:
保留Application.DisplayAlerts = False可以跳过Excel弹出的“此文件格式不支持宏”提示框,让保存过程自动完成。
内容的提问来源于stack exchange,提问作者AymonB
相关产品推荐
相关产品推荐

