You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改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

关键修改说明

  1. 指定文件格式:
    普通.xlsx对应的VBA格式常量是xlOpenXMLWorkbook(数值为51),必须在SaveAs中显式声明,否则会默认沿用原工作簿的宏启用格式(.xlsm)。

  2. 修正文件名:
    原代码直接使用ActiveWorkbook.Name会包含原文件的.xlsm后缀,导致新文件名出现xxx.xlsm.xlsx的错误格式。通过InStrRev找到最后一个.的位置,截取前面的部分得到纯文件名,再手动添加.xlsx后缀即可解决。

  3. 静默提示:
    保留Application.DisplayAlerts = False可以跳过Excel弹出的“此文件格式不支持宏”提示框,让保存过程自动完成。

内容的提问来源于stack exchange,提问作者AymonB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 07:25:17