PLEASE BE CAREFUL - THIS VERSION HAS BREAKING CHANGES.
I welcome any feedback on this version, including just a note saying that it works (especially on older versions of Excel). If you have any problem understanding the changes, please post a message to the Google Group- I'll be happy to clarify and help get your add-in working again.
The aims with this version were to implement the Excel 2007 data type support and to simplify (and hopefully stabilise) the data type interface between your add-in functions and ExcelDna. Details below...
Next for ExcelDna, I plan to rework some of the marshaling internals in order to implement support for the multi-threaded recalculation in Excel 2007. This work should also allow some nice extensions to be added . . .
The main changes from v. 0.16 are:
* Support added for the Excel 2007 large sheet, large arrays and long Unicode strings.
* BREAKING CHANGE: I made changes to the data types passed into 'object' parameters (under all versions of Excel):
- Missing arguments are received as a new type: ExcelDna.Integration.ExcelMissing, no longer as
- Empty cells are received as a new type: ExcelDna.Integration.ExcelEmpty, no longer as nulls.
- Please study the Describe function in MoreSamples.dna carefully.
* BREAKING CHANGE: Calling XlCall.Excel now will never return a short or int, but returns a double for all numeric call results.
Smaller changes and fixes:
* The system codepage is used for string conversions under Excel versions pre 2007 (thanks to Martin Drescher).
* When the .xll is reloaded via File->Open, I do a close and open, which reloads the .dna file.
* IsInFunctionWizard now returns false when called from the Find/Replace dialog box on English verisons of Excel.
* Internal references received from Excel are populated with the SheetId of the Current sheet before being returned as an ExcelReference. In effect internal references (SREFs) are no longer exposed by ExcelDna, all ExcelReferences are considered external references.