Solved

excel vba copying chart objects to a new workbook

Posted on 2011-03-09
6
931 Views
Last Modified: 2012-08-13
hi

I have a source workbook , call it WorkbookA, with multiple sheets that have chartobjects. I am copying over all the sheets to a WorkbookB. However, on doing so, I find that the charts in the copied over chartobjects in WorkbookB refer to data set in  WorkbookA.

How can I change this so that the charts in WorkbookB refer to data sets in WorkbookB?

I tried to change the Formula so that it refers to WorkBookB, but on doing so it gives a Run-Time error '1004' : Application-defined or object-defined error.

After copying over all the sheets from WorkbookA.xlsm to WorkbookB.xls, do the following


Set NewBook = Application.Workbooks.Open("WorkbookB.xls")
For Each sSheet In NewBook.Sheets
        With sSheet
                For Each chtTemp In .ChartObjects
                    For Each objSeries In chtTemp.Chart.SeriesCollection
                        objSeries.Formula = Replace(objSeries.Formula, "WorkbookA.xlsm", "WorkbookB.xls")
                    Next
                Next
        End With
    Next sSheet
   
    NewBook.Save
    NewBook.Close
0
Comment
Question by:LuckyLucks
  • 3
  • 2
6 Comments
 
LVL 30

Expert Comment

by:SiddharthRout
ID: 35086312
Here is a trick to it without writing too much code.

Rename the sheets which has a chart to say "Lucky1","Lucky2" etc...

Then in the code,

1) Add a new workbook.
2) Move (don't copy) the chart sheet and the source datasheet to the new workbook for example

Sheets("Lucky1").Move After:=Workbooks("NewWorkbook").Sheets(3)

3) Similarly move all sheets from the 1st one to the new book. Ensure that you handle errors. And then close the 1st workbook without saving so the saved version still contains the moved, i.e., removed, sheets

This will ensure that the new workbook's chart refer to the actual sheets.

Let me know if you get stuck.

Sid
0
 

Author Comment

by:LuckyLucks
ID: 35086734
moving is not acceptable. I need to keep the original for a reason. also note that the original WorkBookA is a macro-enabled file while the second WorkbookB is not a macro-enabled file.

Do you know what the error means? I don't need a alternate solution that is totally operating on a different workflow.
0
 
LVL 30

Expert Comment

by:SiddharthRout
ID: 35086904
>>>moving is not acceptable. I need to keep the original for a reason.

Your original file will remain untouched and that is why at the end of the code we will not save the original. If you upload your files, then maybe I can give you a sample code?

Sid
0
Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 
LVL 6

Expert Comment

by:Faisal Khan
ID: 35087344
Try to copy your data sheets first and then chart object sheets. doing so, copied chart would not refer to previous workbook
0
 

Accepted Solution

by:
LuckyLucks earned 0 total points
ID: 35088911
found a similar question by brettdj that was great:

brettdj:

If you are copying the data range as well then you can just relink the destination workbook to itself (from the source workbook) using ChangeLink in VBA

This gets the Chart pointing to the data in the destination folder

Cheers

Dave
0
 

Author Closing Comment

by:LuckyLucks
ID: 35126442
original answer provided by brettdj
0

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction While answering a recent question (http:/Q_27311462.html), I created an alternative function to the Excel Concatenate() function that you might find useful.  I tested several solutions and share the results in this article as well as t…
Approximate matching with VLOOKUP and MATCH seems to me to be a greatly under-used technique, and one which is vital for getting good performance out of large lookups. Until recently I would always have advised using an exact match for simplicity an…
Graphs within dashboards are meant to be dynamic, representing data from a period of time that will change each time the dashboard is updated with new data. Rather than update each graph to point to a different set within a static set of data, t…
This Micro Tutorial will demonstrate on a Mac how to change the sort order for chart legend values and decrpyt the intimidating chart menu.

821 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question