Multiple Pivot Charts SetSourceData Error
Question
I have multiple pivot charts each with their own pivot table on separate worksheets in Excel 2002.
When I try to generate these charts with VBA with the following code:
Set cht = Charts.Add(After:=Worksheets("Setup"))
With cht
' we use named ranges here
.SetSourceData Source:=range(tblName)
.Name = chtName
....
where tblName is a named range just created a few lines before, the code runs fine if there is only one table and chart generate but gives me a run time error 1004: "The source data of a PivotChart report cannot be changed..." if I try to generate pivot table and chart set one after another.
Going to Insert -> Name -> Define, the list of named ranges created seems to be correct.
What is the correct way of setting the source data for a pivot chart with a dynamic range?
Solution 2
This piece of code assumes that you have only one pivot table per sheet and the pivot table starts on Cell A1:
Sheets(wsName).Select
Range("A1").Select
Set cht = Charts.Add(after:=Worksheets(Worksheets.Count))
With cht
.SetSourceData Sheets(wsName).Range("A1")
.Name = chtName
...
Also changing "Worksheets.Count" to a specific worksheet name seems to trigger that error as well.
OTHER TIPS
I think you might be trying to do too many things at once.
If the Data Source is going to change, I wouldn't use a Pivot Chart.
Use a pivot table, create the chart at runtime (like your example). Build your chart of the results of the pivot table.