-2

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

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

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

4

1 回答 1

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 传递。

于 2013-08-27T12:16:50.293 回答