|
本帖最后由 时光鸟 于 2012-12-14 14:20 编辑
给你写了个VBA,批量删除第6, 7, 9, 10, 12, 13, 15, 16行的代码,使用这个批量删除行的代码要注意以下几点:
1)该代码只用来批量删除代码所在文件目录下.xls* 后缀匹配的所有工作薄l的所有工作表的第6, 7, 9, 10, 12, 13, 15, 16行
2)该批量删除操作不可逆转,请注意备份
3)请确保每个工作薄的每个工作表删除的行都相同,且每个工作表只能执行一次,若执行多次会造成误删
- Public Sub test()
- On Error Resume Next
- Dim arrNa(1 To 2000) '定义当前目录下工作薄名称,根据文件量自行修改
- Dim fileNa, thisNa, sheetNum '定义工作薄名称变量,当前工作薄名称变量,当前工作薄的工作表数量
- Dim n, i, ii, iii '定义遍历参数
- arrDel = [{6, 7, 9, 10, 12, 13, 15, 16}] '定义要删除的行号,升序排列
- Application.DisplayAlerts = False '关闭工作薄修改后退出时的提示保存等信息,默认保存
- Set obj = CreateObject("scripting.FileSystemObject")
- For Each fileNa In obj.GetFolder(ThisWorkbook.Path).Files
- If fileNa Like "*.xls*" Then
- n = n + 1: arrNa(n) = fileNa '取出当前目录下符合条件的工作薄的名称存到arrNa数组中
- End If
- Next
- For i = 1 To n
- With CreateObject(arrNa(i)) '遍历所有工作薄
- thisNa = .Name '当前工作薄名称
- If thisNa = "批量删除当前目录下所有工作薄的所有工作表的指定行.xlsm" Then GoTo reg1
- sheetNum = .Worksheets.Count '当前工作薄中工作表的数量
- For ii = 1 To sheetNum
- With .Worksheets(ii) '遍历当前工作薄所有工作表
- For iii = UBound(arrDel) To 1 Step -1 '从下到上删除
- .Rows(arrDel(iii)).EntireRow.Delete shift:=xlUp '遍历删除当前工作薄当前工作表下指定行
- Next iii
- Windows(thisNa).Visible = True '程序执行过程中,当前工作薄可见
- End With
- Next ii
- .Close True '当前工作薄完成后关闭
- End With
- reg1:
- Next i
- Application.DisplayAlerts = True '恢复工作操作后的系统提示信息
- End Sub
复制代码
|
评分
-
1
查看全部评分
-
|