![]() |
Problem passing a large safearray to Excel
I am automating Excel 2000 from a MFC program prepared in VC++2003 and
running in Win2K. Is C++ allowed here? I fill 2 COleSafeArray objects with data and pass them to Excel as follows: oRange.put_Value(COleVariant(saValues)); oRange.put_NumberFormat(COleVariant(saNumFormat)); For small ranges, this works fine; but when the range gets to a certain size, say 750 rows and 8 columns, put_NumerFormat() returns an exception with code 0x80020005. This happens for put_NumberFormat only, not for put_Value. This does not seem to depend on the contents of saNumFormat. It can be empty or filled compeletely with a simple format, "0", and the same thing happens. No cells in Excel receive a number format. If I run the same program from an XP machine with Excel 2003 installed the problem goes away. So someday this will not be a problem. But for now I need to support the earlier versions. Anyone know about this behavior and a way to avoid it? Thanks, Bill Below |
Problem passing a large safearray to Excel
Hi Bill,
If you find 682 x 8 works but one more row fails it's probably due to the 5462 max element limit that hits many things with arrays in xl97 & xl2000. Perhaps something like - if xlVer < 10 then do multiple arrays under 5462 elements else: normal way Regards, Peter T "Bill Below" wrote in message ... I am automating Excel 2000 from a MFC program prepared in VC++2003 and running in Win2K. Is C++ allowed here? I fill 2 COleSafeArray objects with data and pass them to Excel as follows: oRange.put_Value(COleVariant(saValues)); oRange.put_NumberFormat(COleVariant(saNumFormat)); For small ranges, this works fine; but when the range gets to a certain size, say 750 rows and 8 columns, put_NumerFormat() returns an exception with code 0x80020005. This happens for put_NumberFormat only, not for put_Value. This does not seem to depend on the contents of saNumFormat. It can be empty or filled compeletely with a simple format, "0", and the same thing happens. No cells in Excel receive a number format. If I run the same program from an XP machine with Excel 2003 installed the problem goes away. So someday this will not be a problem. But for now I need to support the earlier versions. Anyone know about this behavior and a way to avoid it? Thanks, Bill Below |
Problem passing a large safearray to Excel
Thanks, Peter. That was it. The KB to read is 177991 if anyone want to
follow up. Bill "Peter T" wrote: Hi Bill, If you find 682 x 8 works but one more row fails it's probably due to the 5462 max element limit that hits many things with arrays in xl97 & xl2000. Perhaps something like - if xlVer < 10 then do multiple arrays under 5462 elements else: normal way Regards, Peter T "Bill Below" wrote in message ... I am automating Excel 2000 from a MFC program prepared in VC++2003 and running in Win2K. Is C++ allowed here? I fill 2 COleSafeArray objects with data and pass them to Excel as follows: oRange.put_Value(COleVariant(saValues)); oRange.put_NumberFormat(COleVariant(saNumFormat)); For small ranges, this works fine; but when the range gets to a certain size, say 750 rows and 8 columns, put_NumerFormat() returns an exception with code 0x80020005. This happens for put_NumberFormat only, not for put_Value. This does not seem to depend on the contents of saNumFormat. It can be empty or filled compeletely with a simple format, "0", and the same thing happens. No cells in Excel receive a number format. If I run the same program from an XP machine with Excel 2003 installed the problem goes away. So someday this will not be a problem. But for now I need to support the earlier versions. Anyone know about this behavior and a way to avoid it? Thanks, Bill Below |
All times are GMT +1. The time now is 12:32 AM. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com