|
已经有一段VBA代码判断excel中是否有 包含 szmg的关键字,只要包括就不删除,不包括szmg字段的则删除,
代码见附件中《VBA代码放这里.xlsm》。
Sub 批量删除工作表()
Application.ScreenUpdating = False '关闭屏幕刷新
Dim wb As Workbook '定义工作簿对象
Set Fso = CreateObject("Scripting.FileSystemObject") '引用fso对象
For Each oFile In Fso.GetFolder(ThisWorkbook.Path & "\111\").Files '遍历当前工作簿路径下的“数据源”文件夹内所有文件
If oFile.Name Like "*.xls*" Then '如果拓展名包含xls
Set wb = Workbooks.Open(oFile)
Application.DisplayAlerts = False '关闭警告信息
For Each sh In wb.Worksheets
arr = sh.[a1].CurrentRegion
For i = UBound(arr) To 2 Step -1
For j = 2 To UBound(arr, 2)
If arr(i, j) Like "*szmg*" Then n = 1: Exit For
Next j
' If n = 0 Then Rows(i).interior.Color=RGB(221,221,221)
If n = 0 Then Rows(i).Delete
n = 0
Next i
Next sh
wb.Close True
Application.DisplayAlerts = True '恢复警告信息
Set wba = Nothing
End If
Next oFile
Set Fso = Nothing
Application.ScreenUpdating = True '恢复屏幕刷新
MsgBox ("完成。")
End Sub
执行以后存在2大问题:
1、无法对整个文件夹中的所有xlsx文件执行,比如“二级目录”文件夹的4.xlsx 无法执行到。
2、 一个工作簿中有多个工作表,只执行到了其中一个。比如1.xlsx中 1111工作表、2222工作表,其中一个无法执行到。
我的代码按道理包括了实现以上两个要求的语句,但均未成功,请高手帮忙看看代码哪里错了?
样本.zip
(73.2 KB, 下载次数: 4)
|
|