Forum Discussion
AdamWojcik
Jul 10, 2021Copper Contributor
Copy charts from all sheets to one
I have written a macro that looks like this: Sub CopyCharts()
Dim Sheet_Count As Integer
Dim Target_Sheet As Worksheet
Dim i As Integer
Sheet_Count = ActiveWorkbook...
- Jul 10, 2021
1) You have two For loops, but only one Next.
2) You declare a variable Target_Sheet.
3) You don't use the keyword Set to assign Target_Sheet
3) You try to paste to the undefined variable ChartSheet
4) You try to paste to a string instead of a range.
5) Chart is not a good name for a variable, since it is the name of a built-in object.
Here is a working version:
Sub CopyCharts() Dim Sheet_Count As Integer Dim Target_Sheet As Worksheet Dim i As Integer Dim Cht As ChartObject Sheet_Count = ActiveWorkbook.Sheets.Count Set Target_Sheet = ActiveWorkbook.Sheets(1) For i = 2 To Sheet_Count For Each Cht In ActiveWorkbook.Sheets(i).ChartObjects Cht.Copy Target_Sheet.Paste Target_Sheet.Range("D4") Next Cht Next i End Sub
6) All charts will be pasted more or less on top of each other
df17c
Aug 08, 2022Copper Contributor
Instead of copying all of the charts onto one sheet in the same workbook, is there a way to copy all of the charts into a new workbook?
- HansVogelaarAug 08, 2022MVP
Change the line
Set Target_Sheet = ActiveWorkbook.Sheets(1)
to
Set Target_Sheet = Workbooks.Add(xlWBATWorksheet).Sheets(1)
- df17cAug 08, 2022Copper ContributorIt's giving me a runtime error '9': Subscript out of range
- HansVogelaarAug 08, 2022MVP