修改VBA代码:复制工作表为仅含值的无宏新工作簿并保存
修改后的VBA代码:仅保留值与格式,自动移除宏
核心修改说明
- 切断公式关联:复制工作表到新工作簿后,将单元格内容替换为值并保留原格式,彻底解除与原工作簿的公式依赖
- 宏自动清除:
.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
相关产品推荐
相关产品推荐

