I imagine the ultimate tool for Excel add-ins with .Net would have to combine:
- The extensive functionality that ManagedXll provides for making advanced add-ins in .Net - an overview and examples of this works is here:
http://www.stochastix.de/solutions/excel/managedxll/latest/features.
- The low barrier to entry and great integration that VBA provides - press Alt+F11 in Excel, add a module and your are writing your UDF. With debugger, intellisense, immediate window etc. all right there!
- Some VSTO features like Ribbon UI customization and higher-level objects.
I think ManagedXll really got the style right. For example, adding an [AsyncWorksheetFunction] attribute makes your function asynchronous. Currently in ExcelDna you would have to implement that kind of functionality explicitly inside your own add-in. It can be done (like with a
C++ or an automation add-in), but with the reflection and code generation capabilities of .Net, the add-in host could generate the glue needed on the fly.
There have been attempts at my second point too. A company called Trelliswerk had something called ".NET Scripting Excel Edition" which was an integrated IDE for Excel, implementing the Boo language. They nearly got it right - it had a command shell, debugging, intellisense etc. But they couldn't integrate the UDF story well, partly because they tried to do it with the Automation Add-In interface. So they ended up with the 'one-function' UDF style, where all the user-defined functions are exposed through a single function to Excel, taking the function name as a parameter - not great. And maybe Boo was a bit strange - it was before IronPython - and even
Python is not so mainstream under people who might like to use .Net in Excel. It seemed promising, but I don't think it's around anymore.
So I think ManagedXll, the Trelliswerk stuff and VSTO provide enough proof-of-concept to show that an awesome .Net add-in framework can be developed on top of the current Excel, even without any extra help from inside Excel. Even if Microsoft dramatically changes direction for the next-next version of Excel (i.e. properly integrates VSTA into Excel), I think the requirement to have something like this for existing versions (and including Excel 2010) will exist for many years. I'm slowly, slowly working my way there with ExcelDna...