![将工作表移动到另一个工作簿,不使用 vba 代码但保留配色方案](https://linux22.com/image/1417584/%E5%B0%86%E5%B7%A5%E4%BD%9C%E8%A1%A8%E7%A7%BB%E5%8A%A8%E5%88%B0%E5%8F%A6%E4%B8%80%E4%B8%AA%E5%B7%A5%E4%BD%9C%E7%B0%BF%EF%BC%8C%E4%B8%8D%E4%BD%BF%E7%94%A8%20vba%20%E4%BB%A3%E7%A0%81%E4%BD%86%E4%BF%9D%E7%95%99%E9%85%8D%E8%89%B2%E6%96%B9%E6%A1%88.png)
我当前有一些代码,首先复制一个工作表进行一些清理,然后将其移动到另一个工作簿。
我的问题是,当我复制或移动工作表时,它也会复制附加到工作表对象的 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 代码
希望它有帮助:)祝你有美好的一天。