I am using the C# Excel interop and I want to create a copy of a chart from one sheet but I want this copy on another sheet. I have tried the following:

```
Excel.ChartObject chartTemplate = (Excel.ChartObject)sheetSource.ChartObjects("chart 1");
object o = chartTemplate.Duplicate();
Excel.ChartObject chart = (Excel.ChartObject)sheetSource.ChartObjects("chart 2");
chart.Name = "Skew" + expiry.ToString("MMMyy");
range = sheetDestination.Range["T" + chartRowCoutner.ToString()];

chart.Chart.Location(Excel.XlChartLocation.xlLocationAsObject, range);

```

But when I try this, the last line throws an error:

> 
> An unhandled exception of type 'System.Exception' occurred in projectname.exe
> 
> 
> Additional information: Error reading Excel file C:\ ...the file path...\template.xlsx: Value does not fall within the
>  expected range.
> 
> 
> 

I have also tried passing a sheet in instead of a range:

```
chart.Chart.Location(Excel.XlChartLocation.xlLocationAsObject, sheetDestination);

```

but this gives the same error. I can't understand the reason for the error or how to fix it / bypass it.

I am trying to avoid bringing the clipboard into this, but even if I try copying and pasting, I can still only paste it as an image, which is really not ideal:

```
Excel.ChartArea chartArea = chart.ChartArea;
chartArea.Copy();
range = sheetDestination.Range["T" + chartRowCoutner.ToString()]; // Note that chart is not on the sheet sheetDestination
range.PasteSpecial(Excel.XlPasteType.xlPasteAll);

```

The only other solution I can think of now is to do this in VBA and then execute the macro via the interop. But surely it can be done in a clean way just using the interop without the clipboard.