您好,欢迎来到化拓教育网。
搜索
您的当前位置:首页按条件批量删除Excel工作簿

按条件批量删除Excel工作簿

来源:化拓教育网


按条件批量删除Excel工作簿

对【常用小代码201】中的代码稍加修改,即可批量将工作簿的完整名称提取到当前工作表的A列。代码如下:

Sub kjxgbooks() Dim p$, f$, k& With

Application.FileDialog(msoFileDialogFolderPicker) .AllowMultiSelect = False If .Show Then p = .SelectedItems(1) Else: Exit Sub End With If Right(p, 1) <> '\\' Then p = p & '\\' [a:b].ClearContents k = 1 [a1] = '目录' [b1] = '是否删除' f = Dir(p & '*.xls*') Do While f <> '' k = k + 1 Cells(k, 1) = p & f f = Dir LoopEnd Sub

代码大部分的语句在前面的链接中已经注释说明过了,所以这里就没有注释。使用以上代码可以将指定文件夹内的工作簿名称提取到表格的A列,如下图所示。

之后在表格的B列,咱们可以通过排序、筛选、以及函数等方式,灵活快捷的对A列的工作簿名称判断是否需要删除,如需删除,在B列标注为“删除”。

最后通过以下代码对判断的结果进行删除操作:

Sub Delbooks() Dim r, i& r = [a1].CurrentRegion '数据区域装入数组r For i = 2 To UBound(r) '遍历数组r If r(i, 2) = '删除' Then Kill r(i, 1) '如果B列的值为删除,则杀死相关文件。 NextEnd Sub

小贴士:本文第二段代码通过Kill语句从磁盘删除文件,它的语法是Kill pathname参数pathname是必须的,一个字符串表达式,用来指定要删除的文件名,可以包含目录或文件夹以及驱动器,可以使用通配符指定多个文件。比如,删除D:\\看见星光下的所有包含“星光”的Excel工作簿,代码如下:Kill 'D:\\看见星光\\*星光*.xls*'星号(*)是通配符,可以代替零到多个字符。细心的您也许会问,为什么是.xls*,而不是.xls?在Kill眼中xls和xlsx以及xlsm是截然不同的,如果是.xls,则Kill语句只杀死后缀名为.xls的工作簿。小思考:

如何批量删除代码所在工作簿内名称包含“星光”的工作表?VBA编程学习与实践

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo9.cn 版权所有 赣ICP备2023008801号-1

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务