ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 10946|回复: 15

[求助] 删除指定文件夹中所有工作簿中的空白工作表

[复制链接]

TA的精华主题

TA的得分主题

发表于 2013-6-15 21:57 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
如何删除指定文件夹中所有工作簿中的空白工作表。

内有很多工作簿.rar

15.47 KB, 下载次数: 102

TA的精华主题

TA的得分主题

发表于 2013-6-15 22:06 | 显示全部楼层
大循环,打开指定文件夹中的文件
内循环,检查文件中的每个工作表。
判断工作表上是否存在非空单元格
不存在则删除,关闭
关闭文件。

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-6-15 22:09 | 显示全部楼层
maditate 发表于 2013-6-15 22:06
大循环,打开指定文件夹中的文件
内循环,检查文件中的每个工作表。
判断工作表上是否存在非空单元格

能来点直接的代码供测试?

TA的精华主题

TA的得分主题

发表于 2013-6-15 22:11 | 显示全部楼层
张雄友 发表于 2013-6-15 22:09
能来点直接的代码供测试?

给你代码你会永远长不大。

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-6-15 22:15 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
教学相长,永不过时。

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-6-15 22:21 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
maditate 发表于 2013-6-15 22:11
给你代码你会永远长不大。

功力不够深厚,编写了一个,出错。
  1. Sub text()
  2. Application.ScreenUpdating = False
  3. Dim sh As Worksheet
  4. For Each sh In ThisWorkbook.Worksheets
  5. If sh Is Empty Then
  6. sh.Delete
  7. End If
  8. Next
  9. Application.ScreenUpdating = True
  10. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2013-6-15 22:36 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
张雄友 发表于 2013-6-15 22:21
功力不够深厚,编写了一个,出错。

Sub 查空表()
For Each myS In ThisWorkbook.Sheets
aa = Application.CountA(myS.Cells)
If aa = 0 Then
  MsgBox myS.Name & "工作表为空表"
Else
  MsgBox myS.Name & "工作表有 " & aa & "  个单元格有值"

End If

Next
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-6-15 22:38 | 显示全部楼层
maditate 发表于 2013-6-15 22:36
Sub 查空表()
For Each myS In ThisWorkbook.Sheets
aa = Application.CountA(myS.Cells)

与要求不符合。

TA的精华主题

TA的得分主题

发表于 2013-6-15 22:43 | 显示全部楼层
张雄友 发表于 2013-6-15 22:38
与要求不符合。

没有按一楼的要求写代码,只不过给你查空表的例子。

TA的精华主题

TA的得分主题

发表于 2013-6-15 23:17 | 显示全部楼层
本帖最后由 yygpdkkk 于 2013-6-16 00:39 编辑

---------------


  1. Sub 遍历文件夹删除空白工作表()
  2.     Dim thePath$, theBook As Workbook, sht As Object
  3.     Dim theVisibleShtCount&, theSht As Worksheet, theStr$
  4.     Dim theBookCount&, theShtCount&
  5.     With Application.FileDialog(msoFileDialogFolderPicker)
  6.         .AllowMultiSelect = False
  7.         If .Show = -1 Then
  8.             thePath = .SelectedItems(1)
  9.             If Right(thePath, 1) <> "" Then thePath = thePath & ""
  10.         Else
  11.             If MsgBox("以本工作簿所在路径为默认文件夹吗?" _
  12.             & vbNewLine & vbNewLine & "单击“否”可退出程序", vbYesNo, "确认默认路径") = vbYes Then
  13.                 thePath = ThisWorkbook.Path
  14.                 If Right(thePath, 1) <> "" Then thePath = thePath & ""
  15.             Else
  16.                 GoTo The_Exit
  17.             End If
  18.         End If
  19.     End With
  20.     theStr = Dir(thePath & "*.xls")
  21.     If theStr <> "" Then
  22.         Application.ShowWindowsInTaskbar = False
  23.         Do
  24.             Application.ScreenUpdating = False
  25.             If theStr <> ThisWorkbook.Name Then
  26.                 On Error Resume Next
  27.                 Set theBook = Workbooks.Open(thePath & theStr)
  28.                 If Err.Number = 0 Then
  29.                     On Error GoTo 0
  30.                     theBookCount = theBookCount + 1
  31.                     For Each theSht In theBook.Worksheets
  32.                         If WorksheetFunction.CountA(theSht.Cells) = 0 Then
  33.                             theVisibleShtCount = 0
  34.                             If theBook.Sheets.Count > 1 Then
  35.                                 For Each sht In theBook.Sheets
  36.                                     If sht.Visible = xlSheetVisible Then theVisibleShtCount = theVisibleShtCount + 1
  37.                                 Next sht
  38.                                 If theVisibleShtCount > 1 Then
  39.                                     Application.DisplayAlerts = False
  40.                                     theSht.Delete
  41.                                     theShtCount = theShtCount + 1
  42.                                     Application.DisplayAlerts = True
  43.                                 Else
  44.                                     If theSht.Visible = xlSheetVisible Then
  45.                                         Application.ScreenUpdating = True
  46.                                         MsgBox "工作簿内须至少含有一张可视工作表" _
  47.                                         & vbNewLine & vbNewLine & "当前待处理工作簿“" & theBook.Name & "”的最后一个可视工作表“" & theSht.Name & "”不能被删除!", vbExclamation, "警告"
  48.                                         Application.ScreenUpdating = False
  49.                                     End If
  50.                                 End If
  51.                             Else
  52.                                 Application.ScreenUpdating = True
  53.                                 MsgBox "工作簿内须至少含有一张可视工作表" _
  54.                                 & vbNewLine & vbNewLine & "当前待处理工作簿“" & theBook.Name & "”的最后一个可视工作表“" & theSht.Name & "”不能被删除!", vbExclamation, "警告"
  55.                                 Application.ScreenUpdating = False
  56.                             End If
  57.                         End If
  58.                     Next theSht
  59.                     theBook.Close SaveChanges:=True
  60.                 Else
  61.                     On Error GoTo 0
  62.                     Application.ScreenUpdating = True
  63.                     MsgBox "打开工作簿" & theStr & "失败!", vbCritical, "错误"
  64.                     Application.ScreenUpdating = False
  65.                 End If
  66.             End If
  67.             theStr = Dir
  68.         Loop Until theStr = ""
  69.         Application.ScreenUpdating = True
  70.         MsgBox "共计处理 " & theBookCount & " 个工作簿,删除 " & theShtCount & " 个工作表", vbInformation, "提示"
  71.         Application.ShowWindowsInTaskbar = True
  72.     Else
  73.         Application.ScreenUpdating = True
  74.         MsgBox "不存在目标工作簿!", vbInformation, "提示"
  75.     End If
  76. The_Exit:
  77.     Application.ScreenUpdating = True
  78.     Application.ShowWindowsInTaskbar = True
  79.     Set theBook = Nothing
  80. End Sub

复制代码

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-19 20:30 , Processed in 0.046687 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表