可以使用以下VBA代码来按名称切割报告:
Sub SplitReportsByName()
Dim master As Workbook '定义主工作簿
Set master = ThisWorkbook '将当前工作簿作为主工作簿
Dim sheetNames() As String '定义字符串数组来存储要切割的工作表名称
sheetNames = Array("Sheet1", "Sheet2", "Sheet3") '传入要切割的工作表名称
Dim reportName As String '定义报告名称
Dim currentSheet As Worksheet '定义当前工作表
For Each currentSheet In master.Sheets '循环遍历主工作簿的所有工作表
If Not IsError(Application.Match(currentSheet.Name, sheetNames, 0))) Then '如果当前工作表名存在于要切割的工作表名称中
reportName = currentSheet.Name '将报告名称设置为当前工作表名称
currentSheet.Copy '将当前工作表复制为新工作簿
With ActiveWorkbook '定义新工作簿
.SaveAs Filename:=reportName & ".xlsx", FileFormat:=xlOpenXMLWorkbook '另存为新工作簿的文件格式为xlsx
.Close SaveChanges:=False '关闭新工作簿,不保存更改
End With
End If
Next currentSheet
End Sub
上述代码可以将主工作簿中符合要求的工作表(即名称在数组sheetNames中的工作表)按名称切割成新的工作簿,新工作簿以工作表名称命名并保存为.xlsx格式。可以根据需要修改sheetNames数组中的工作表名称。
上一篇:按名称匹配行
下一篇:按名称切割报告的宏帮助。