1
用Delphi改变图表位置,创建一个excel工作表的一些数据值,然后我创建图表:在Excel产生访问冲突
WChart := ((ExcelApplication1.Workbooks[1].ActiveSheet) as _Worksheet).Shapes.AddChart(xl3DPie,
EmptyParam, EmptyParam,
EmptyParam, EmptyParam).Chart;
该图表在片材上正确创建。 现在我想将它移动到新的工作表是这样的:
WChart.Location(xlLocationAsNewSheet, EmptyParam);
这导致访问冲突。
我谷歌搜索了很多,没有找到使用Delphi的例子。所有其他语言(如VBA)正在做一些等同于我的代码的东西。
任何帮助表示赞赏。
编辑:
这里是行触发AV汇编代码:
WChart.Location(xlLocationAsNewSheet, EmptyParam);
lea eax,[ebp-$0000019c]
call @IntfClear
push eax
lea eax,[ebp-$000001ac]
call EmptyParam
push dword ptr [ebp-$000001a0]
push dword ptr [ebp-$000001a4]
push dword ptr [ebp-$000001a8]
push dword ptr [ebp-$000001ac]
push $01
mov eax,[ebp-$14] // [ebp-$14] is WChart value
push eax
mov eax,[eax]
call dword ptr [eax+$00000198] // Supposed to call Location()
call @CheckAutoResult
您可以更具体地了解访问冲突吗? (什么是具体的消息,包括涉及的内存地址?)另外,试图将图表移动到与创建它的代码相关的代码的位置在哪里?是 –
您是否尝试给新的工作表命名(而不是EmptyParam)? –
访问冲突是“异常类$ C0000005,消息'0x00080004访问冲突:读取地址0x00080004',我提到的两行只是一个接一个地使用表名不会改变任何内容 – fpiette