Excel图表到PowerPoint C ++ / CLI HRESULT异常:0x800A03EC

时间:2013-07-30 00:13:26

标签: excel c++-cli powerpoint office-interop msdn

我正在尝试复制excel图表,然后使用C ++ / CLI将它们粘贴到PowerPoint中,尽管我在尝试使用Copy()方法时遇到了困难。以下是我的代码的简化版本:

Worksheet = dynamic_cast<Excel::Worksheet^>(WS[3]);
chartObjects = dynamic_cast<Excel::ChartObjects^>(Worksheet->ChartObjects(paramMissing));
existingChartObject = dynamic_cast<Excel::ChartObject^>(chartObjects->Item(2));
existingChartObject->Copy();
shapeRange = Slide->Shapes->Paste();

但是当我尝试这个时它会给我一个错误:

An unhandled exception of type 'System.NullReferenceException' occurred in Excel To PPT.exe

Additional information: Object reference not set to an instance of an object.

现在我的Excel工作簿在第3页开始的每张工作表上都有 6 图表。如果我复制工作表3上的所有图表并将它们放到像这样的幻灯片上。

将此尝试称为

for(count = 1, count <= 6; ++count){
    Worksheet = dynamic_cast<Excel::Worksheet^>(WS[2]);
    chartObjects = dynamic_cast<Excel::ChartObjects^>(Worksheet->ChartObjects(paramMissing));
    existingChartObject = dynamic_cast<Excel::ChartObject^>(chartObjects->Item(count));
    existingChartObject->Copy();
    shapeRange = Slide->Shapes->Paste();
}

然后没有抛出异常。现在,如果我尝试做同样的事情,但从图2而不是1开始,我会抛出异常。像这样:

将此尝试称为

for(count = 2, count <= 6; ++count){
    Worksheet = dynamic_cast<Excel::Worksheet^>(WS[2]);
    chartObjects = dynamic_cast<Excel::ChartObjects^>(Worksheet->ChartObjects(paramMissing));
    existingChartObject = dynamic_cast<Excel::ChartObject^>(chartObjects->Item(count));
    existingChartObject->Copy();
    shapeRange = Slide->Shapes->Paste();
}

当我单步执行并在第二次尝试时将鼠标悬停在existingCharObject上时,它不是空的,看起来与尝试1中的完全相同。

为什么第二次尝试会抛出异常,但第一次不会?我应该能够复制任何我想要的Excel ChartObject?它迫使我从整个工作簿中的ChartObject 1开始,然后继续工作,不允许我随机复制ChartObjects。

如果您需要更多信息,请与我们联系。我不想将整个项目都放到这里,这是项目中唯一给我提问的部分。

0 个答案:

没有答案