Vba 将工作表复制到新工作簿并防止其更改

Vba 将工作表复制到新工作簿并防止其更改,vba,excel,export,excel-2007,Vba,Excel,Export,Excel 2007,我有一个VBA循环来生成一系列仪表板。它的工作原理是在一个特定单元格中更改两个字母的代码,进行查找,并允许在该工作表上更新一组图表。到目前为止,我一直在为每个刷新的仪表板导出PDF,但现在我需要在excel中创建该工作表的静态副本 在交换代码之间,我可以复制一份更新的工作表,并将其保存在另一个工作簿中。我最终会生成一个包含20个类似工作表的工作簿。我希望这些图表被不确定地冻结 我可以通过防止自动重新计算来做到这一点,或者有人可以建议其他方法吗?工作表本身包含10-15个单独的图表。如果我理解正确

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

在交换代码之间,我可以复制一份更新的工作表,并将其保存在另一个工作簿中。我最终会生成一个包含20个类似工作表的工作簿。我希望这些图表被不确定地冻结


我可以通过防止自动重新计算来做到这一点,或者有人可以建议其他方法吗?工作表本身包含10-15个单独的图表。

如果我理解正确,是否要将当前工作表复制到现有工作簿上的新工作表,去掉任何公式或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。

谢谢。你知道这会不会保留图表吗?哦,对不起。错过了。修改后的代码会将每个图表作为图像复制到目标工作表中。但是,如果在运行之前目标页上有任何实际图像,它将不会运行。非常感谢。我想说的是,这种方法并不完全正确(图表显示相同且位置错误),但粘贴值的想法非常有用。