View Single Post
  #1   Report Post  
Posted to microsoft.public.excel.crashesgpfs,microsoft.public.excel.interopoledde,microsoft.public.excel.programming
Dirk[_2_] Dirk[_2_] is offline
external usenet poster
 
Posts: 8
Default How can I call Range::Find from C++ without crashing Excel?

First of all for all the optional parameters that you don't use pass
vtMissing.
pRangeSearch-Find("MKV", vtMissing ...

Then make sure all the smart pointers wrap a valid interface pointer. You
should
always do something like this:
Excel::_WorksheetPtr pWorksheet = Wb-Sheets-Item[1];
ATLASSERT(pWorksheet != 0); // if called from atl code

Where do you use the given code? Could there be an issue with the calling
convention?


"Aaron Queenan" wrote in message
...
I can call Range::Find from VBA - it works correctly, and requires only

one
argument.

When I call it from C++, the function either throws an exception, or

causes
a "Stack Corruption" error.

I am calling it with the following syntax:

Excel::_WorksheetPtr pWorksheet = Wb-Sheets-Item[1];

Excel::RangePtr pRangeSearch = pWorksheet-Cells;

Excel::RangePtr pRangeCurrent = pRangeSearch-Find("MKV",

_variant_t(),
_variant_t(),
_variant_t(), _variant_t(), Excel::xlNext, _variant_t(),
_variant_t());

Is there anything I'm doing wrong?

Thanks,
Aaron Queenan.