问题描述
我正在编写一些VBA代码,该代码将从工作簿中的每个工作表中复制一个图表,然后将组合图表粘贴到新工作表上。
手动,我知道我可以复制每个图表,然后粘贴到上一个图表的顶部,每个数据集都将可用。但是,这是痛苦的手动操作。我希望创建一个VBA宏来代替。
当前,我的代码将图表从每个工作表复制并粘贴到新工作表中,但是它们仍然是单独的图表。我需要一些指导。
Sub copyGraphs()
Dim OutSht As Worksheet
Dim Chart As ChartObject
Dim PlaceInRange As Range
Set OutputSheet = ActiveWorkbook.Sheets("PostProcess")
Set PlaceInRange = OutputSheet.Range("A1:J21")
'Loop charts
For Each Sheet In Worksheets
Sheet.Activate
If Range("A4") <> "" Then
'copy/paste charts
ActiveSheet.ChartObjects("Chart 1").Activate
ActiveChart.ChartArea.copy
Sheet.ChartObjects("Chart 1").copy
OutputSheet.Paste PlaceInRange
End If
Next Sheet
End Sub
任何建议将不胜感激。
编辑:
我最终不得不为每个图运行一个循环。仍然需要手动确保“ Chart 1”,“ Chart x”位于我的代码中名为PostProcess的主表中。对我来说,这是蛮力的,但是行得通。
Sub copyGraphs()
Dim OutSht As Worksheet
Dim Chart As ChartObject
Dim PlaceInRange As Range
Dim chartInput As Chart
Dim chartOutput As Chart
Set Outputsheet = ActiveWorkbook.Sheets("PostProcess") '<~~ Output sheet
'Loop charts for efficiency
For Each Sheet In Worksheets
Sheet.Activate
If Range("A4") <> "" Then
'copy/paste charts
ActiveSheet.ChartObjects("Chart 1").Activate
ActiveChart.ChartArea.copy
Sheets("PostProcess").Select
ActiveSheet.ChartObjects("Chart 1").Activate
ActiveChart.Paste
End If
Next Sheet
解决方法
如果我正确理解了您的问题,则必须将输入图表直接粘贴到组合图表中,而不是粘贴到指定范围内。您必须使用类似的东西:
Dim chartInput As Chart
Dim chartOutput As Chart
Set chartInput = Sheet1.ChartObjects("Chart 1").Chart
Set chartOutput = Sheet1.ChartObjects("Combined chart").Chart
chartInput.ChartArea.Copy
chartOutput.Paste