Excel-Ausnahme HRESULT: 0x800A03EC von ChartArea.Copy ()

Ich arbeite an einer C # -Anwendung, die mit einer Excel-Instanz unter Verwendung von excel interop.dll v11.0 interagiert. Ich verwende den folgenden Code, um ein Diagramm aus dem Excel-Arbeitsblatt in die Zwischenablage zu kopieren:

public Image ReadChart(Chart chartAccess) {
    try {
        Microsoft.Office.Interop.Excel.Worksheet sheet = workbook.Sheets[chartAccess.Sheet.Name];
        Microsoft.Office.Interop.Excel.ChartObject chart = sheet.ChartObjects(chartAccess.Name);
        chart.Chart.ChartArea.Copy();  // exception gets thrown here 
        return System.Windows.Forms.Clipboard.GetImage();
    } catch (COMException) {
        // display error dialog etc...
    }

Dies hat in Excel 2007 problemlos funktioniert. Seit dem Wechsel zu Excel 2013 führt die Funktion ChartArea.Copy () jedoch dazu, dass die folgenden COMExceptions ausgelöst werden:

Message:      "Dimension not valid for chart type"
Stack Trace:  System.RuntimeType.ForwardCallToInvokeMember(String memberName, BindingFlags flags, Object target, Int32[] aWrapperTypes, MessageData& msgData)
              Microsoft.Office.Interop.Excel.ChartArea.Copy()

Message:      "HRESULT: 0x800A03EC"
Stack Trace:  System.RuntimeType.ForwardCallToInvokeMember(String memberName, BindingFlags flags, Object target, Int32[] aWrapperTypes, MessageData& msgData)
              Microsoft.Office.Interop.Excel.ChartArea.Copy()

Dies geschieht nur mit Excel-Tabellen im alten XLS-Format, xlsm / xlsx-Dateien funktionieren einwandfrei. Die Verwendung neuerer Versionen von interop.dll (v14.0 und v15.0) hat nicht geholfen.

Jede Hilfe wird gebeten!

BEARBEITEN

Ich habe das Problem mithilfe der folgenden Problemumgehung behoben:

// ...
chart.Chart.activate();
chart.Chart.Export(filename, "PNG", false);
using (Stream reader = File.OpenRead(filename)) {
    image = Image.fromStream(stream);
}
return image;

Antworten auf die Frage(4)

Ihre Antwort auf die Frage