ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 另存的文件用VBA如何不带代码?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2013-6-2 16:59 | 显示全部楼层 |阅读模式
我有一个.xls的表另存到D盘下,如何设置代码另存的时候把D盘下的该文件代码删了?
从网上看来的代码,弄到我的表里就在with workbooks.open(s)这一段过不去了,提示1402错误
    Dim vbc As Object, shp As Shape, s$, sh As Worksheet
    s = ThisWorkbook.Path & "\备份" & ThisWorkbook.Name
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    ThisWorkbook.SaveCopyAs s
    With Workbooks.Open(s)
        For Each sh In .Sheets
            For Each shp In sh.Shapes
                shp.Delete
            Next
        Next
        For Each vbc In .VBProject.VBComponents
            Select Case vbc.Type
            Case 1, 2, 3
                With Application.VBE.ActiveVBProject.VBComponents
                    .Remove .Item(vbc.Name) '删除模块、类模块、窗体
                End With
            Case Else
                vbc.CodeModule.DeleteLines 1, vbc.CodeModule.CountOfLines '删除工作表或Thisworkbook代码区代码
            End Select
        Next
        .Close True
    End With

TA的精华主题

TA的得分主题

发表于 2013-6-2 17:08 | 显示全部楼层
上面代码差不多了啊,照下面修改下。
尤其注意   With Application.VBE.ActiveVBProject.VBComponents  这句对象搞错了。应该指定为你要删除的工作簿
  1. Sub 删除代码()
  2.     Dim M As Object, Wb As Workbook
  3.     Set Wb = ActiveWorkbook
  4.     For Each M In Wb.VBProject.VBComponents
  5.         If M.Type <> 100 Then
  6.               Wb.VBProject.VBComponents.Remove M '如果不是工作表,则移除
  7.         ElseIf M.Type = 100 Then
  8.             M.CodeModule.DeleteLines 1, M.CodeModule.CountOfLines  '如果是工作表则删除
  9.         End If
  10.     Next
  11. End Sub
  12. With Application.VBE.ActiveVBProject.VBComponents
复制代码

TA的精华主题

TA的得分主题

发表于 2013-6-2 17:23 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
楼主的意思,应该是删文件代码吧!不是删工作表!
我也想知道呢!关注

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-6-2 21:52 | 显示全部楼层
crazy0qwer 发表于 2013-6-2 17:08
上面代码差不多了啊,照下面修改下。
尤其注意   With Application.VBE.ActiveVBProject.VBComponents  这 ...

运行时错误1004
应用程序或对象程序错误

TA的精华主题

TA的得分主题

发表于 2013-6-2 22:09 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
风中雨清 发表于 2013-6-2 21:52
运行时错误1004
应用程序或对象程序错误
  1. Sub aa()
  2.     Dim vbc As Object, shp As Shape, s$, sh As Worksheet, M As Object
  3.    
  4.     s = ThisWorkbook.Path & "\备份" & ThisWorkbook.Name
  5.     Application.ScreenUpdating = False
  6.     Application.DisplayAlerts = False
  7.     ThisWorkbook.SaveCopyAs s
  8.    
  9.     With Workbooks.Open(s)
  10.         For Each sh In .Sheets
  11.             For Each shp In sh.Shapes
  12.                 shp.Delete
  13.             Next
  14.         Next
  15.         
  16.         For Each M In .VBProject.VBComponents
  17.             If M.Type <> 100 Then
  18.                 .VBProject.VBComponents.Remove M '如果不是工作表,则移除
  19.             ElseIf M.Type = 100 Then
  20.                 M.CodeModule.DeleteLines 1, M.CodeModule.CountOfLines  '如果是工作表则删除
  21.             End If
  22.         Next
  23.         
  24.         .Close True
  25.     End With
  26. End Sub
复制代码
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-9-21 13:55 , Processed in 0.030637 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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