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

如何通过输入框批量删除含指定部分名称的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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 17:40:21