Excel VBA批量删除指定sheet,sheet名称为shuju 需要完整代码,完整代码也就30行左右的,麻烦赐教

如题所述

Sub1()
Dim filepath As String
filepath = "d:\test" '指定目录
Dim file As String
file = Dir(filepath & "\" & "*.xlsm") '提取目录下所有文件名,注意不会查询子目录。
Do While file <> ""
    Dim Wb As Workbook
    Wb = Workbooks.Open(filepath & "\" & file)'打开文件
    Dim ws As Worksheet
    For Each ws In Wb.Worksheets
        If ws.Name = "shuju" Then '判断worksheet名称
            ws.Delete '删除
            Exit For
        End If
    Next
    Wb.Save'保存
    Wb.Close'关闭文件
    file = Dir'获得下一个文件名
Loop
End sub

追问

有sheet“shuju”就删除,没有则推出,是吧?不用 If d.Exists shuju是否存在了?

追答

当然了,for each就是遍历每个worksheet,如果没有就直接退出了。
我写的有点不对的是,wb.save应该放在ws.delete后面,因为如果没有发现 shuju的话,就不用保存文件了。

追问

你的代码不完美,少set wb,set wb = nothing 少Application.ScreenUpdating = False
少Application.DisplayAlerts = True

温馨提示:内容为网友见解,仅供参考
第1个回答  2016-06-10
这代码不用30行吧追问

加有无shuju的sheet的判断,还有xlsm的后缀,具体多少行不管,意思就是不复杂,工作量不是很多,麻烦帮助者多点耐心赐教

第2个回答  2016-06-10
Option Explicit

Sub delsht()
Dim sht As Worksheet
Application.DisplayAlerts = False
For Each sht In Worksheets
If sht.Name = "shuju" Then sht.Delete
Next sht
Application.DisplayAlerts = True
End Sub

追问

描述文字限制,不是在同一个工作薄内批量sheet,是批量删除很多个工作薄内的sheet,麻烦修改下,我一个文件夹里有上百个Excel文件,

追答Option Explicit

Sub findPath()
Dim efile As Variant
Dim wokb As Workbook
Dim ppath As String
Dim sht As Worksheet
Application.DisplayAlerts = False
ppath = "e:\t\" '这里填写你的文件路径,比如我的在E盘的T文件夹下
efile = Dir(ppath & "*.xlsm")
Do While efile <> ""
Set wokb = Application.Workbooks.Open(ppath & efile)
For Each sht In wokb.Worksheets
If sht.Name = "shuju" Then 
sht.Delete
exit for
end if
Next sht
wokb.Save
wokb.Close
Set wokb = Nothing
efile = Dir
Loop
Application.DisplayAlerts = True
End Sub

追问

有sheet“shuju”就删除,没有则推出,是吧?不用 If d.Exists shuju是否存在了?

追答

对,有就删除,没有就退出了

本回答被提问者和网友采纳

Excel VBA批量删除指定sheet,sheet名称为shuju 需要完整代码,完整代码...
Do While file <> "" Dim Wb As Workbook Wb = Workbooks.Open(filepath & "\\" & file)'打开文件 Dim ws As Worksheet For Each ws In Wb.Worksheets If ws.Name = "shuju" Then '判断worksheet名称 ws.Delete '删除 Exit For End If Next Wb.Save'保...

excel中怎么使用Vba批量删除指定文件夹下的所有文件?
1、首先新建一个excel文件并双击打开,打开后,按快捷键F12进行另存为,注意另存的格式要选择启用宏的工作簿,如下图所示:2、接着找到左上角的文件按钮,选择选项按钮,如下图所示:3、在弹出的对话框中选择信任中心,并选择信任中心设置,接着选择隐私选项,并把保存时删除个人信息的对号去掉,整体设...

在excel中如何使用vba命令实现批量删除指定名称的工作表?
按Alt + F11,双击ThisWorkbook,粘贴下面的代码:Sub ouyangff()On Error Resume Next Application.DisplayAlerts = False For i = 2 To [g65536].End(3).Row a$ = Cells(i, 7)Sheets(a$).Delete Next Application.DisplayAlerts = True End Sub 按Alt + F11,回到你的画面所示的“表”中!

Excelvba删除工作表的代码和实例
第一,按下ALT+F11,打开VBE编辑器。第二,单击菜单:插入——模块,插入一个模块,并复制下面的代码到代码输入区:Sub vba删除工作表()Application.DisplayAlerts = False Dim sht As Object For Each sht In ThisWorkbook.Worksheets If sht.Name > "IT部落窝论坛" Then sht.Delete End If Next ...

如何批量删除所有EXCEL表格里面固定的sheet工作表~~
1、首先打开Excel,如图,这里有8张工作表,现在需要把默认名称的“Sheet”表全部删除。2、找到 方方格子 选项卡。3、然后点开“工作表”按钮下的“删除指定表”。4、可以看到有多种删除方式,包括空白表、隐藏表、指定第几张表等。这里通过筛选把“Sheet”表全部找出来。5、点确定即可。可以看到所有...

VBA批量删除excel中的工作表
单击SHEET1,按住SHIFT再单击SHEET15,会将SHEET1到SHEET15全选定,然后右键单击任何一个选中的SHEET,删除

EXCEL中如何用VBA删除多个工作表?
打开一个Excel文件,鼠标右击下面的工作表(如sheet1)。选择“查看代码”,就可以打开VBA编辑界面。选择如下图所示的下拉菜单,选择“worksheet”。选择如下图所示的下拉菜单,选择对应的触发模式。这里我们选择BeforeDoubleClick,意思就是说:在本工作表鼠标双击(之前),将触发下面的代码程序。(activate...

excel vba 删除短横号,用VBA,指定删除范围和表名,方便按键在另表也...
Sub test()Dim c As RangeWith Sheets("Sheet2").Range("A1:B10") '表名和区域自己可以改 For Each c In .Cells c = Replace(c, "-", "") Next cEnd WithEnd Sub

如何使用VBA在EXCEL中批量删除整列数据并调整列的顺序?
首先,需要将排序的位置放在sheet2的A列中,然后执行代码 Sub m()Set dicb = CreateObject("scripting.dictionary")For i = 1 To Sheet2.Range("A65536").End(xlUp).Row If dicb.exists(Sheet2.Cells(i, 1).Value) = False Then k = k + 1 dicb(Sheet2.Cells(i, 1).Value) = k...

vba中怎么清空工作表中的数据?
首先我们打开一个工作样表作为例子。excel中使用vba清除工作表内容 使用alt+f11组合快捷键进入vbe编辑器,插入一个新的模块,并在模块中输入以下代码:Option Explicit Sub ddt()'ActiveCell.CurrentRegion.Select 'Range(ActiveCell.End(xlUp), ActiveCell.End(xlDown)).Select Range("A1").ClearContents '...

相似回答