ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助]如何将一个带宏工作簿另存为另一个不带宏的工作簿

[复制链接]

TA的精华主题

TA的得分主题

发表于 2008-7-31 22:52 | 显示全部楼层 |阅读模式

一个工作簿中有10个工作表,而且有VBA宏,如何将它存为不带宏的工作簿,用VBA代码如何实现?

请高手指点,谢谢

[此贴子已经被作者于2008-7-31 22:53:24编辑过]

TA的精华主题

TA的得分主题

发表于 2008-7-31 23:17 | 显示全部楼层

以下是俺以前做的一个绩效管理模块中的生成上报表子模块,没有仔细修改,仅供参考!

思路很简单,生成一个新的工作簿,然后另存为当前工作簿同目录下的一个文件,然后再将需要的工作表从当前工作簿中拷贝过去,最后再删除新增工作簿中的所有VBA。

PS:宏安全性中,可行发行商中须勾选 信任对于VB项目的访问

Sub S_生成上报表()
    Application.EnableEvents = False
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    this_wb_name = ThisWorkbook.Name
    bm ="备份"
    p_ath = ThisWorkbook.Path & "\" :    f_name = "绩效统计报表_" & bm & ".xls"
    Workbooks.Add
    On Error Resume Next
    ActiveWorkbook.SaveAs Filename:=p_ath & f_name
    On Error GoTo 0
    new_wb_name = f_name
    With Workbooks(this_wb_name)
        Dim shet As String, i As Integer
        Application.DisplayAlerts = False
        For Each sht In .Sheets
            sht.Copy after:=Workbooks(new_wb_name).Sheets(3)  
        Next sht
    End With
    Windows(new_wb_name).Activate
    For Each sht In Workbooks(this_wb_name).Sheets: sht.Visible = xlSheetVisible: Next
    Workbooks(Workbooks.Count).Worksheets("Sheet3").Delete
    Workbooks(Workbooks.Count).Worksheets("Sheet2").Delete
    Workbooks(Workbooks.Count).Worksheets("Sheet1").Delete
    With Workbooks(Workbooks.Count) '以下开始删除VBA代码
        Dim vbcCom, Vbc
        Set vbcCom = .VBProject.VBComponents
        For Each Vbc In vbcCom
            If Vbc.Name Like "Sheet*" Or Vbc.Name Like "This*" Then
                Vbc.CodeModule.DeleteLines 1, Vbc.CodeModule.CountOfLines
            Else
                vbcCom.Remove (Vbc)
            End If
        Next Vbc
        .Save
        .Close
    End With'删除结束
    Application.EnableEvents = True
    If MsgBox("完成上报表制作,文件保存在" & p_ath & "中!" & Chr(10) & Chr(10) & "现在需要打开上报文件吗?", vbYesNo, "请选择:") = 6 Then Application.Workbooks.Open p_ath & new_wb_name
    Err.Clear
    Application.ScreenUpdating = True
End Sub

TA的精华主题

TA的得分主题

发表于 2008-7-31 23:20 | 显示全部楼层

N久以前写的代码,相当粗糙,没有优化!

只想给你一个解题思路!

但愿对你有用!

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-7-31 23:46 | 显示全部楼层
这一句“Set vbcCom = .VBProject.VBComponents”提示错误

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-7-31 23:56 | 显示全部楼层

可行发行商中须勾选 信任对于VB项目的访问”

这些如何设置?

谢谢!

TA的精华主题

TA的得分主题

发表于 2008-8-1 00:01 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
QUOTE:
以下是引用penglining在2008-7-31 23:56:25的发言:

可行发行商中须勾选 信任对于VB项目的访问”

这些如何设置?

谢谢!

在工作簿菜单中,工具-宏-安全性-可靠发行商  

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-8-1 08:17 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
保存的文件虽然没有VBA代码,但仍然带有宏 和按钮,打开时还有“启动宏”提示窗口,如何将它们去掉,请指点,谢谢!

TA的精华主题

TA的得分主题

发表于 2010-2-5 15:47 | 显示全部楼层
大师你好!
    2楼代码中的下面代码,在做什么?删除工作表?谢谢!!
  Workbooks(Workbooks.Count).Worksheets("Sheet3").Delete
    Workbooks(Workbooks.Count).Worksheets("Sheet2").Delete
    Workbooks(Workbooks.Count).Worksheets("Sheet1").Delete

TA的精华主题

TA的得分主题

发表于 2017-4-27 01:00 | 显示全部楼层

为什么 ,我找不着嘎,。
工具-->宏-->安全性-->可靠发行商-->勾选"信任对于VB项目的访问"

TA的精华主题

TA的得分主题

发表于 2017-8-16 17:36 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
请问这个是不是说 带宏的保存为不带宏的情况下  表里面的宏就没有了?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-19 01:22 , Processed in 0.039761 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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