我有一个 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 传递。