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
无论如何我都无法使用它,将工作表复制到新工作簿时还有另一种删除宏的方法吗?
谢谢
答案 0 :(得分:0)
我可能已经知道了。我研究了将其保存为XLSX,发现需要将.savecopyas更改为.saveas,并添加文件格式
.SaveAs Filename:=strDesktopPath & "\" & ct & " Report.xls", FileFormat:=51