如何解决Excel VBA复制多个工作表中的图表,然后将它们合并到单独工作表中的单个图形中
我正在编写一些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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。