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

修改VBA代码:复制工作表为仅含值的无宏新工作簿并保存

修改后的VBA代码:仅保留值与格式,自动移除宏

核心修改说明

  1. 切断公式关联:复制工作表到新工作簿后,将单元格内容替换为值并保留原格式,彻底解除与原工作簿的公式依赖
  2. 宏自动清除:.xlsx格式本身不支持宏,保存为该格式时,新工作簿的宏代码会被自动移除,原工作簿不受任何影响

修改后的完整代码

Sub exportFirst()

    Const NewFilePath As String _
      = "C:\Users\Feketenyek\Test Folder"

    Dim SourceSheet As Worksheet
    Set SourceSheet = ThisWorkbook.Worksheets(1)

    exportWorksheet SourceSheet, NewFilePath

End Sub

Sub exportWorksheet(SourceSheet As Worksheet, NewFilePath As String)

    Dim NewFileName As String
    Dim SaveLocation As String

    NewFileName = "File Prefix " & ThisWorkbook.Sheets("Auto_Pop").Range("A2") & " File Suffix"
    SaveLocation = NewFilePath & "\" & NewFileName

    ' 复制源工作表到新工作簿
    SourceSheet.Copy
    
    With ActiveWorkbook
        ' 处理新工作表:保留值和所有格式,清除公式
        With .Worksheets(1)
            .UsedRange.Copy
            .UsedRange.PasteSpecial Paste:=xlPasteValuesAndNumberFormats
            .UsedRange.PasteSpecial Paste:=xlPasteFormats
            Application.CutCopyMode = False ' 清除剪贴板状态
        End With
        
        SaveLocation = SaveLocation & ".xlsx"
        .SaveAs FileFormat:=xlOpenXMLWorkbook, _
          FileName:=SaveLocation
        .Close SaveChanges:=False

    End With

End Sub

关键细节补充

  • 将ActiveWorkbook.Sheets("Auto_Pop")改为ThisWorkbook.Sheets("Auto_Pop"),避免当前活动工作簿切换时出错
  • 采用两次粘贴操作,确保完整保留原工作表的数字格式、单元格样式、边框、颜色等所有格式
  • 保存为.xlsx后,打开新工作簿不会出现宏启用提示,可确认宏已被完全移除

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 07:38:27