Hi Laurent,
Yes, these names are used for programming purposes, but these names are also visible to the user, so it is an interesting issue... To solve it, you can simply refer to the Chart by it's integer index value.
For example, instead of:
ActiveSheet.ChartObjects("Chart 6").Activate
You could use:
ActiveSheet.ChartObjects(6).Activate
In the above, I assumed that "Chart 6" is indexed by the value 6, but it can really be any number. For example, if you've created and destroyed five previous charts, and this chart is now the only chart on the worksheet, the chart named "Chart 6" would actually be indexed by the integer value one (1).
So you will have to figure out which index number your chart corresponds to, and then use that index value in your code.
Make sense?
Update: Reply to Laurent
As for the name being displayed to the
user, what if I named the graph
"Motorboat"?
That's it! That's your answer!!
I was about to suggest that you stick to the portion of the name that does not change. For example, "Chart 6" is being changed to "グラフ 6". So, in this case, you should simply loop through all the charts looking for the one that ends in the name "6". But, even better, is to simply avoid words that will be automatically translated. So, instead of naming it, "Chart 6", name it, yes, "Motorboat" or anything else that would not be automatically translated.
Using this approach, instead of:
ActiveSheet.ChartObjects("Chart 6").Activate
You would use:
ActiveSheet.ChartObjects("Motorboat").Activate
Agreed that this is not ideal. There might even be a programmatic code name for charts that I'm not aware of, which, if it exists, would allow you to use any name you want. But, in the absence of such a feature, then using a name for your chart that would not be translated seems to be the best and easiest way to go.
Hope this helps!
Mike