Excel在大范围复制时崩溃

Excel在大范围复制时崩溃,excel,com,ms-office,office-interop,vba,Excel,Com,Ms Office,Office Interop,Vba,我已经开发了一个Excel COM插件,它通过多个XLSM文件(阶段),从另一个文件生成一个文件(使用启用宏的模板),复制一些数据,最后创建一个PDF报告。 我最近引入了一个函数,在打开两个工作簿的情况下,从工作簿1复制到工作簿2的范围相当大(A1:X500) //Copy values from W1 to W2 Excel.Worksheet WS_Out = W1.Worksheets["Out"]; Excel.Worksheet WS_In = W2.Worksheets["In"]

我已经开发了一个Excel COM插件,它通过多个
XLSM
文件(阶段),从另一个文件生成一个文件(使用启用宏的模板),复制一些数据,最后创建一个PDF报告。 我最近引入了一个函数,在打开两个工作簿的情况下,从工作簿1复制到工作簿2的范围相当大(A1:X500)

//Copy values from W1 to W2
Excel.Worksheet WS_Out = W1.Worksheets["Out"]; 
Excel.Worksheet WS_In = W2.Worksheets["In"];
WS_In.Range["A1:X517"].Value = WS_Out.Range["A1:X517"].Value;
此代码有时有效。但最近它开始崩溃Excel,没有任何可能捕捉到错误

这是一个严重的错误,使整个系统不稳定。如果在复制部分没有失败,那么在下一个工作簿上失败,当我尝试以编程方式读取单元格时

有关于我可能做错什么的信息吗


我修改了以前的阶段,并确保我发布了我可能已经做过的任何工作表或工作簿引用(通过使用
Marshal.ReleaseComObject
函数)

1)哪个版本的Excel?历史上,某些版本在读取/写入大范围时存在错误。2) 尝试使用
Value2
而不是
Value
。3) 尝试一个较小的范围,并增加/减少大小,直到您能够确定它开始失败的大小或单元。故障点附近的数据有什么特别之处吗?嗨!Excel 2013和2016都会出现这种情况。我为什么要使用Value2?有什么原因吗?我尝试了更小的范围,然后它也崩溃了。。。这是随机发生的,只有在我从头到尾浏览多个excel文件的情况下才会发生。假设该过程有3个阶段,因此3个excel文件将相互生成并复制值。它只会以这种方式崩溃。如果我只是启动excel并打开最后一个阶段(以前的一次尝试),它将顺利进行。这让我想,这可能是内存相关的问题。我复制的数据中有公式,但我对此不感兴趣,我只想要普通值。我上面写的代码片段就是这样做的。请参阅,了解Text vs.Value vs.Value2。当其他加载项不再影响对象时,释放对象的代码可能会导致崩溃?这可以解释为什么您无法在自己的代码中捕获错误。1)哪个版本的Excel?历史上,某些版本在读取/写入大范围时存在错误。2) 尝试使用
Value2
而不是
Value
。3) 尝试一个较小的范围,并增加/减少大小,直到您能够确定它开始失败的大小或单元。故障点附近的数据有什么特别之处吗?嗨!Excel 2013和2016都会出现这种情况。我为什么要使用Value2?有什么原因吗?我尝试了更小的范围,然后它也崩溃了。。。这是随机发生的,只有在我从头到尾浏览多个excel文件的情况下才会发生。假设该过程有3个阶段,因此3个excel文件将相互生成并复制值。它只会以这种方式崩溃。如果我只是启动excel并打开最后一个阶段(以前的一次尝试),它将顺利进行。这让我想,这可能是内存相关的问题。我复制的数据中有公式,但我对此不感兴趣,我只想要普通值。我上面写的代码片段就是这样做的。请参阅,了解Text vs.Value vs.Value2。当其他加载项不再影响对象时,释放对象的代码可能会导致崩溃?这就解释了为什么您不能在自己的代码中捕获错误。