将工作表复制到新工作簿并防止它们更改

时间:2013-08-27 10:56:28

标签: excel vba excel-vba export excel-2007

我有一个VBA循环来生成一系列仪表板。它的工作原理是更改一个特定单元格中的双字母代码,执行查找,并允许在该工作表上更新一组图表。到目前为止,我一直在为每个刷新的仪表板导出PDF,但现在我需要在excel中制作该工作表的静态副本。

在交换代码之间,我可以制作更新的工作表的副本,并将其保存在另一个工作簿中。我最终会生成一个包含20个类似工作表的工作簿。我希望图表无限期冻结。

我可以通过阻止自动重新计算来做到这一点,还是有人可以建议另一种方法?工作表本身包含10-15个单独的图表。

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您希望将当前工作表复制到现有工作簿上的新工作表,删除任何公式或VBA?这应该做到。

Sub transferStrip(destFile As String)
    Dim wbSource As Workbook
    Dim wbDest As Workbook
    Dim shCopy As Worksheet
    Dim shPaste As Worksheet
    Dim chtIndex As Integer

    Set wbSource = ActiveWorkbook
    Set wbDest = Workbooks.Open(destFile)
    Set shCopy = wbSource.Sheets("[SheetName]")

    shCopy.UsedRange.Copy
    Set shPaste = wbDest.Sheets.Add(After:=wbDest.Sheets(wbDest.Sheets.Count))
    shPaste.Range("A1").PasteSpecial (xlPasteFormats)
    shPaste.Range("A1").PasteSpecial xlPasteValues

    chtIndex = 1
    For Each ch In shCopy.ChartObjects
        shCopy.ChartObjects(chtIndex).CopyPicture
        shPaste.Paste
        shPaste.Shapes(chtIndex).Left = shCopy.ChartObjects(chtIndex).Left
        shPaste.Shapes(chtIndex).Top = shCopy.ChartObjects(chtIndex).Top
    Next ch

wbDest.Close (True)
End Sub

您需要更改以将[SheetName]更改为您希望从源工作簿中复制的工作表的名称,并将要复制的工作簿的路径传递给destFile。