如何通过输入框批量删除含指定部分名称的Excel工作表
批量删除含指定关键词的工作表(VBA代码优化)
原VBA代码仅支持输入单个关键词,删除名称包含该关键词的所有工作表。现需优化为支持输入多个关键词(用逗号分隔,如Pivot,IWS,Associate,Split,Invoice),一次性删除名称匹配任一关键词的工作表。
修改后的完整代码
Sub ClearAllSheetsSpecified() '---------------------------------------------------------------------------------------------------------- ' 批量删除名称包含任一指定关键词的工作表 '---------------------------------------------------------------------------------------------------------- Dim shNames As String Dim nameArr As Variant Dim xWs As Worksheet Dim cnt As Integer Dim i As Integer Dim sheetNameLower As String ' 弹出输入框,提示用户输入多个关键词,用逗号分隔 shNames = Application.InputBox("输入要删除的工作表关键词(多个用逗号分隔):", "批量删除工作表", , , , , , 2) ' 如果输入为空则退出程序 If shNames = "" Then Exit Sub ' 将输入的字符串按逗号分割成数组 nameArr = Split(Trim(shNames), ",") Application.DisplayAlerts = False cnt = 0 ' 遍历所有工作表 For Each xWs In ThisWorkbook.Sheets sheetNameLower = LCase(xWs.Name) ' 遍历每个关键词,检查是否匹配 For i = LBound(nameArr) To UBound(nameArr) ' 去除关键词前后空格并转小写,构建模糊匹配规则 If sheetNameLower Like "*" & LCase(Trim(nameArr(i))) & "*" Then xWs.Delete cnt = cnt + 1 ' 找到匹配关键词后跳出内层循环,避免重复计数 Exit For End If Next i Next xWs Application.DisplayAlerts = True ' 提示删除结果 MsgBox "已删除 " & cnt & " 个工作表", vbInformation, "删除完成" End Sub
关键改动说明
- 新增字符串分割逻辑:用
Split函数将用户输入的多关键词字符串按逗号分割成数组,实现多关键词批量处理 - 双层循环检查:外层遍历所有工作表,内层遍历每个关键词,只要工作表名称匹配任一关键词就执行删除
- 增加
Trim处理:去除输入关键词前后的空格,避免因输入空格导致匹配失败 - 保留大小写不敏感匹配:统一将工作表名和关键词转小写,确保匹配不受大小写影响
内容的提问来源于stack exchange,提问作者Elaine Perez Canlas
相关产品推荐
相关产品推荐

