我当前有一些代码,首先复制一个工作表进行一些清理,然后将其移动到另一个工作簿。
我的问题是,当我复制或移动工作表时,它也会复制附加到工作表对象的 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 代码
希望它有帮助:)祝你有美好的一天。