Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 7836|回复: 11

[已解决]这个情况如何删除vba代码和控件另存

[复制链接]
发表于 2013-12-17 22:51 | 显示全部楼层 |阅读模式
本帖最后由 h486 于 2013-12-18 14:07 编辑

请高手和老师赐教,如何把这样的控件(组合框)和代码用vba删除并另存为。如果有工程密码,知道密码(123),如何用vba删除所有控件和代码,只复制数据到新表格,数据格式不变,需用inputbox设置文件名字),不用2007和2010格式保存)。

连同之前请教两位老师的代码一起重新上传(两位老师的代码很好,但我插件重新增加了,出了些问题,如何调试)。



最佳答案
2013-12-18 18:21
复制工作表为文件.rar (21.97 KB, 下载次数: 97)

11.zip

63.93 KB, 下载次数: 21

发表于 2013-12-18 01:50 | 显示全部楼层
楼主是不是可以变通一下,先存为2007或2010格式的文件(不含宏的工作簿),再把刚才存的文件存为2003格式的文件,最后删除刚开始保存的2007或2010格式的文件
至于那些控件,可以用定位的方法一次性删除。

仅供参考
回复

使用道具 举报

 楼主| 发表于 2013-12-18 09:09 | 显示全部楼层
谢谢兄弟的建议,但如果没装2007和2010,只装2003能管用吗?您帮看下定位那个textbox控件如何定位,用录宏录不下来的。还有工程如果加密,知道密码该如何另存?之前有2位高手帮我做过但我设置有变化代码不能用了,还请高手or老师赐教。
回复

使用道具 举报

发表于 2013-12-18 09:22 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2013-12-18 09:32 | 显示全部楼层
本帖最后由 h486 于 2013-12-18 09:34 编辑

之前的代码不能解决我的新的设置。麻烦老师赐教。
回复

使用道具 举报

发表于 2013-12-18 18:16 | 显示全部楼层
本帖最后由 zjdh 于 2013-12-18 18:19 编辑

Sub 删除宏代码及按钮2()
    On Error Resume Next
    PT = InputBox("请输入新文件名称", "文件名设置")
    If PT = "" Then PT = "工资" & Format(Date, "YYYYMMDD")
    FL = ThisWorkbook.Path & "\太阳\" & PT & ".XLS"
    ActiveSheet.Copy
    With ActiveWorkbook
        For Each ms In .Sheets(1).Shapes
            If ms.Type = 6 Or ms.Type = 8 Then ms.Delete
        Next ms
        For Each vbc In .VBProject.VBComponents
            If vbc.Type = 100 Then
                vbc.CodeModule.DeleteLines 1, vbc.CodeModule.CountOfLines
            End If
        Next vbc
        .SaveAs FL
        .Close
    End With
End Sub
回复

使用道具 举报

发表于 2013-12-18 18:21 | 显示全部楼层    本楼为最佳答案   
复制工作表为文件.rar (21.97 KB, 下载次数: 97)
回复

使用道具 举报

 楼主| 发表于 2013-12-18 19:03 | 显示全部楼层
确实很牛。
1、Type = 6    Type = 8  '帮助里查不到什么意思
  For Each vbc In .VBProject.VBComponents  '这一段的意思没看懂
            If vbc.Type = 100 Then
                vbc.CodeModule.DeleteLines 1, vbc.CodeModule.CountOfLines.VBProject.VBComponents
回复

使用道具 举报

发表于 2013-12-18 20:12 | 显示全部楼层
本帖最后由 zjdh 于 2013-12-18 20:14 编辑

Type = 6  你的这种组合了的控件
Type = 8  单个控件
For Each vbc In .VBProject.VBComponents  '遍历各个宏
If vbc.Type = 100 Then    ‘100是sheet的宏属性
vbc.CodeModule.DeleteLines 1, vbc.CodeModule.CountOfLines.VBProject.VBComponents    ’删除宏的所有内容


回复

使用道具 举报

 楼主| 发表于 2013-12-18 21:20 | 显示全部楼层
谢谢!
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-20 21:29 , Processed in 0.370845 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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