Look first at VBA. The compelling argument for VBA is that once your VBA is written, you just need to provide the book to your user, and it just works. In addition, VBA loads faster than the VSTO add-in, for example.
On the other hand, updating a code can be a nightmare. How do you know that the user was messing with your VBA? What to do if there are several copies of the worksheet - are all relevant and you can reliably check the version?
VSTO , .NET . WPF, , -... . , , Excel,.NET- (, ). : ClickOnce , . , : , , , , , .
, VSTO Excel, VBA, , . , VSTO ( .NET, VSTO), , - , -.
, VBA VSTO . VBA Office, VSTO Visual Studio Visual Studio (Express). VBA - (record-macro FTW!), Visual Studio, . VB.NET # , , .
Jon49, , ExcelDNA, .NET Excel . .NET VSTO, "", VSTO.
, !