ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 另存为工作薄时如何删除新工作薄中的控件

[复制链接]

TA的精华主题

TA的得分主题

发表于 2013-6-13 11:53 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 ugyun 于 2013-6-15 18:26 编辑

各位老师:
        下面这段代码是将原工作薄中的“制单”表单独另存为一个新的工作薄,希望另存后的表中无代码、无控件,但下面的“ActiveSheet.DrawingObjects.Delete ”没起到作用,原表中的listbox和textbox仍保留在新工作薄中(VBA代码删除成功了)

  1. Sub daochu()
  2. Dim BF
  3.     BF = MsgBox("  制单导出必须信任“Visual Basic项目”的访问,否则导出数据时可能会提示:“不信任到Visual Basic Project的程序连接”的提示。" & Chr(13) & Chr(13) & "  解决方法:请先退出系统,再打开一个新的excel,在工具-宏-安全性-“可靠发行商”选项卡下勾选“信任对于‘Visual Basic项目’的访问”即可。" & Chr(13) & Chr(13) & "  确定要导出所有制单吗?", 289, "系统信息")
  4.     If BF = 1 Then
  5.      fileSaveName = Application.GetSaveAsFilename("批量制单导出" & Format(Now, "YYYY-MM-DD-HHmmSS"), filefilter:="Microsoft Office Excel 工作薄 (*.xls), *.xls", Title:="数据导出>>>请选择路径并命名")
  6.         If fileSaveName <> False Then
  7.            With Sheets("制单")
  8.               Sheets("制单").Visible = True
  9.               Sheets("制单").Activate
  10.               ActiveSheet.Copy
  11.            End With
  12.                   
  13.                   Set vc = ActiveWorkbook.VBProject.VBComponents("Sheet1").CodeModule '另存前删除“制单”中的代码
  14.                   X = vc.CountOfLines
  15.                   For I = X To 1 Step -1
  16.                   vc.DeleteLines I
  17.                   ActiveSheet.DrawingObjects.Delete '另存前删除“制单”中的控件
  18.                   Next
  19.                   
  20.                    ActiveWorkbook.Close SaveChanges:=True, Filename:=fileSaveName
  21.                    MsgBox "所有制单已成功导出到指定目录下!" & Chr(13) & Chr(13) & "数据文件名为:" & fileSaveName, 64, "批量制单导出"
  22.                    Sheets("制单").Select
  23.               Exit Sub
  24.          Else
  25.              MsgBox "您未选择导出制单路径,导出中止!", 64, "制单导出"
  26.          End If
  27.       Else
  28.           MsgBox "您已取消了制单导出!", 64, "系统信息"
  29.       End If
  30. End Sub
复制代码

另存为如何删除控件.rar

36.06 KB, 下载次数: 50

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-6-13 14:56 | 显示全部楼层
哪位老师帮忙看看,谢谢了

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-6-15 18:27 | 显示全部楼层
帖子发了几天了,没老师帮忙,现已将附件传上来了,放在1楼了,哪位老师路过帮忙看看,谢谢了

TA的精华主题

TA的得分主题

发表于 2013-6-15 18:35 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
ActiveSheet.DrawingObjects.Delete 这行代码有误,应为ActiveSheet.SHAPES(INDEX).Delete
用个FOR循环 TO ActiveSheet.SHAPES.COUNT
然后循环 ActiveSheet.SHAPES(INDEX).Delete 删除即可

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-6-15 18:41 | 显示全部楼层
LBTDI 发表于 2013-6-15 18:35
ActiveSheet.DrawingObjects.Delete 这行代码有误,应为ActiveSheet.SHAPES(INDEX).Delete
用个FOR循环  ...

好像还是不行哦,请指点

TA的精华主题

TA的得分主题

发表于 2013-6-15 18:47 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
ugyun 发表于 2013-6-15 18:41
好像还是不行哦,请指点

ACTIVESHEET.SHAPES.COUNT返回的是你激活工作表所使用的控件的总数量,要不你循环下
FOR COUNTER = 1 TO  ACTIVESHEET.SHAPES.COUNT
MSGBOX ACTIVESHEET.SHAPES(COUNTER).NAME
ACTIVESHEET.SHAPES(COUNTER).DELETE
NEXT

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-6-15 18:54 | 显示全部楼层
LBTDI 发表于 2013-6-15 18:47
ACTIVESHEET.SHAPES.COUNT返回的是你激活工作表所使用的控件的总数量,要不你循环下
FOR COUNTER = 1 TO ...

经测试,还是不行

TA的精华主题

TA的得分主题

发表于 2013-6-15 19:02 | 显示全部楼层
ugyun 发表于 2013-6-15 18:54
经测试,还是不行

Sub A()
Do While ActiveSheet.Shapes.Count >= 1

ActiveSheet.Shapes(1).Delete

Loop

End Sub
唉,没办法了,号没等级,限制发帖,随便整个发下,用DO就可以完成,因为FOR的时候,COUNT在减少,COUNTER到后面溢出的,你按这个写就可以

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-6-15 21:58 | 显示全部楼层
浓墨郁金香 发表于 2013-6-15 19:02
Sub A()
Do While ActiveSheet.Shapes.Count >= 1

很好,看了那么多代码,就这一个真正实现了另存时删除新工作薄的控件

TA的精华主题

TA的得分主题

发表于 2014-7-30 11:28 | 显示全部楼层
浓墨郁金香 发表于 2013-6-15 19:02
Sub A()
Do While ActiveSheet.Shapes.Count >= 1

就这个答案,简单明了的解决了我的问题。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-13 17:42 , Processed in 0.035436 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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