【发布时间】:2018-11-16 14:52:53
【问题描述】:
我正在开发用于季度报告的项目模板,用户将在其中借助一些宏完成报告,然后将选定的工作表导出到新工作簿。当我将工作表复制到新工作簿时,我想删除所有宏/VB 代码,以便接收报告的人只会获取数据,而不是任何宏。我下面的内容复制了我需要的特定工作簿。
Dim ct
Dim strDesktopPath
Dim objWS as Object
On Error Resume Next
ct = Application.InputBox("Enter Contract Number (5555, 6666, 7777)", "Save As")
strDesktopPath = objWS.SpecialFolders("Desktop")
If ct = "5555" Then
Sheet1.Select
Sheet2.Select
Sheet3.Select
Sheet4.Select
Sheet5.Select
Selection.Copy
With ActiveWorkbook
.SaveCopyAs Filename:=strDesktopPath & "\" & ct & " Report.xls"
End With
我已经进行了研究,但我看到的所有内容都包括以下内容:
Dim VBProj As VBIDE.VBProject
Dim VBComp As VBIDE.VBComponent
Dim CodeMod As VBIDE.CodeModule
Set VBProj = ActiveWorkbook.VBProject
Set objWS = CreateObject("WScript.Shell")
For Each VBComp In VBProj.VBComponents
If VBComp.Type = vbext_ct_Document Then
Set CodeMod = VBComp.CodeModule
With CodeMod
.DeleteLines 1, .CountOfLines
End With
Else
VBProj.VBComponents.Remove VBComp
End If
Next VBComp
这无论如何都不起作用,在将工作表复制到新工作簿时,还有其他方法可以删除宏吗?
谢谢你,
【问题讨论】:
-
你用的是什么版本?使用最新版本,如果您要保存到 xlsx,则会自动删除宏
-
Excel 版本?我在 excel 2016 中。我尝试了 xlsx,它保存的文件无法打开。我做错了吗?
-
当我执行 xlsx 并尝试打开文件时,它显示“Excel 无法打开文件 '5555 报告',因为文件格式或文件扩展名无效。验证该文件尚未已损坏且文件扩展名与文件格式匹配。”