【问题标题】:Remove Macros when copying sheets to new workbook将工作表复制到新工作簿时删除宏
【发布时间】: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 报告',因为文件格式或文件扩展名无效。验证该文件尚未已损坏且文件扩展名与文件格式匹配。”

标签: excel vba


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    • 2013-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多