ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 按下按钮即删除部分工作表和所有宏模块

[复制链接]

TA的精华主题

TA的得分主题

发表于 2015-7-29 20:56 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 zhangshine 于 2015-7-30 21:39 编辑

    一个工作簿内有若干个表,其中多个表内有宏按钮。
    希望能在按下汇总!表中的“标准化”按钮以后自动删除A1!,B2!和C3!,删除工作簿中所有按钮和宏模块(包括执行代码自身),然后关闭文件。
    感觉有点难度,还望前辈们不吝赐教,谢谢!


按下按钮后删除部分工作表和所有宏模块.rar

7.95 KB, 下载次数: 55

TA的精华主题

TA的得分主题

发表于 2015-7-29 23:22 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
  1. Sub 按钮1_单击()
  2.     Dim Sh As Worksheet
  3.     Dim C As Object
  4.     Dim M As Object
  5.     On Error Resume Next
  6.     Application.DisplayAlerts = False
  7.     Sheets(Array("A1", "B2", "C3")).Delete
  8.     For Each Sh In Sheets
  9.         For Each C In Sh.Shapes
  10.             If C.Type = 8 Or C.Type = 12 Then C.Delete
  11.         Next
  12.     Next
  13.     For Each M In ThisWorkbook.VBProject.VBComponents
  14.         If M.Type = 100 Then
  15.             M.CodeModule.DeleteLines 1, M.CodeModule.CountOfLines
  16.         Else
  17.             ThisWorkbook.VBProject.VBComponents.Remove M
  18.         End If
  19.     Next
  20. End Sub
复制代码


勾选 "信任对VB工程的访问"
2007 及以上版本: 文件---选项---信任中心---信任中心设置---宏设置---勾选 信任对 VBA 工程对象模型的访问。
2003                    :  工具---选项---安全性---宏安全性---可靠发行商--- 勾选  信任对 VB 项目 的访问。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-7-30 12:36 | 显示全部楼层
ili 发表于 2015-7-29 23:22
勾选 "信任对VB工程的访问"
2007 及以上版本: 文件---选项---信任中心---信任中心设置---宏设置---勾 ...

前辈我实在太崇拜您了!

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-7-30 21:38 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 zhangshine 于 2015-7-30 22:11 编辑

    有一种情况:有时候刚刚点了清除所有宏模块的按钮,又想到表格哪里需要修改,可是在删宏模块之前忘记保存一下文件。
    于是,让人崩溃的问题来了——我无法撤销上一步操作,可是帮助实现各种功能的所有宏模块都已经被删掉了。于是会纠结,是从头开始做表格——还是从别的文件把模块导过来……
    所以我修改了一下,在代码开始位置先执行保存文件。这样遇到上述问题时就可以关闭文件,选择不保存文件(也就相当于撤销了“
清除所有宏模块”的操作)。这个思路也同样适用于其它不可撤销操作的宏命令。
    以下是修改后的代码,和大家分享一下。

  1. Sub 按钮1_单击()
  2.     ActiveWorkbook.Save
  3.     Dim Sh As Worksheet
  4.     Dim C As Object
  5.     Dim M As Object
  6.     On Error Resume Next
  7.     Application.DisplayAlerts = False
  8.     Sheets(Array("A1", "B2", "C3")).Delete
  9.     For Each Sh In Sheets
  10.         For Each C In Sh.Shapes
  11.             If C.Type = 8 Or C.Type = 12 Then C.Delete
  12.         Next
  13.     Next
  14.     For Each M In ThisWorkbook.VBProject.VBComponents
  15.         If M.Type = 100 Then
  16.             M.CodeModule.DeleteLines 1, M.CodeModule.CountOfLines
  17.         Else
  18.             ThisWorkbook.VBProject.VBComponents.Remove M
  19.         End If
  20.     Next
  21. End Sub
复制代码


按下按钮后删除部分工作表和所有宏模块.rar

9.02 KB, 下载次数: 186

TA的精华主题

TA的得分主题

 楼主| 发表于 2015-8-10 11:57 | 显示全部楼层
ili 发表于 2015-7-29 23:22
勾选 "信任对VB工程的访问"
2007 及以上版本: 文件---选项---信任中心---信任中心设置---宏设置---勾 ...

前辈,代码很好用,但我遇到一个问题:在执行代码时,表格中原先设置好的自动筛选下拉按钮也被删掉了,请问该如何避免呢。

TA的精华主题

TA的得分主题

发表于 2017-1-15 22:22 来自手机 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2018-6-11 10:36 | 显示全部楼层
zhangshine 发表于 2015-7-30 21:38
有一种情况:有时候刚刚点了清除所有宏模块的按钮,又想到表格哪里需要修改,可是在删宏模块之前忘记保 ...

帮助很大。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-25 13:03 , Processed in 0.043072 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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