将工作表移动到另一个工作簿,不使用 vba 代码但保留配色方案

将工作表移动到另一个工作簿,不使用 vba 代码但保留配色方案

我当前有一些代码,首先复制一个工作表进行一些清理,然后将其移动到另一个工作簿。

我的问题是,当我复制或移动工作表时,它也会复制附加到工作表对象的 vba 代码。

有办法避免这种情况吗?

此外,当我将工作表移动到另一个工作簿时,颜色也会发生变化。是否有允许保留源格式的移动选项,就像 Excel 功能区中的粘贴一样。

目前,我正在导出颜色方案,然后将其导入到新工作簿,但这需要解锁源工作簿,而使用新的(2013)安全性则需要很长时间。

非常感谢您的想法。

答案1

我的猜测是你的代码有类似

ActiveWorkbook.Sheets(1).Copy

这将复制 VBa。

如果您想在不使用 VBa 的情况下复制它,您必须通过选择所有行和单元格来完成。

ActiveWorkbook.Sheets(1).Cells.Copy
Workbooks("abc.xls").Worksheets.Add
ActiveSheet.Cells.PasteSpecial Paste:=xlPasteAll

以上资料来源

或者,您可以继续,但只需从新工作表中删除任何 VBa

此示例从项目中删除所有 VBa

    Sub DeleteAllVBACode()
    Dim VBProj As VBIDE.VBProject
    Dim VBComp As VBIDE.VBComponent
    Dim CodeMod As VBIDE.CodeModule

    Set VBProj = ActiveWorkbook.VBProject

    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
End Sub

来源(及其他示例)

答案2

Sub LuuVaXoaCode()
Dim Theo_Doi
Theo_Doi = ActiveWorkbook.Name
Theo_Doi = ActiveSheet.Name
Sheets(Theo_Doi).Copy
ActiveSheet.DrawingObjects.Delete

'Delete code cua worksheet
With ActiveWorkbook
        For Each Theo_Doi In .Worksheets
            With .VBProject.VBComponents(Theo_Doi.CodeName).CodeModule
                .DeleteLines 1, .CountOfLines
            End With
        Next
 'Hien cua so Save As
Application.Dialogs(xlDialogSaveAs).Show
ActiveWindow.Close
End With
End Sub

答案3

我发现了一些关于如何使用 VBA 将 Office 主题颜色从一个工作簿复制到另一个工作簿以及关于Excel 颜色不知为何发生了改变?

...也许这也有用,它包含 VBA 代码:用于处理 Excel 2007 主题的 VBA 代码

希望它有帮助:)祝你有美好的一天。

相关内容