将工作表复制到新工作簿时删除宏

时间:2018-11-16 14:52:54

标签: excel vba

im正在研究用于季度报告的项目模板,其中用户将在一些宏的帮助下完成报告,然后将选择的工作表导出到新工作簿中。当我将工作表复制到新工作簿时,我想删除所有宏/ 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

无论如何我都无法使用它,将工作表复制到新工作簿时还有另一种删除宏的方法吗?

谢谢

1 个答案:

答案 0 :(得分:0)

我可能已经知道了。我研究了将其保存为XLSX,发现需要将.savecopyas更改为.saveas,并添加文件格式

.SaveAs Filename:=strDesktopPath & "\" & ct & " Report.xls", FileFormat:=51