UPDATE 20-JUL-2013: Microsoft has provided a “Roadmap” for the various technologies for developing with Office applications. In a nutshell, it states that all three current technologies will continue to be supported for the foreseeable future: http://blogs.msdn.com/b/vsto/archive/2013/06/18/roadmap-for-apps-for-office-vsto-and-vba.aspx
With the introduction of the new “Apps for Office” in Office 2013 a lot of people are asking about the future of Office programming. Is VBA going to be discarded? How about VSTO and the COM Add-in technology, generally? Will everyone have to learn Java script in order to do anything with Office?
At the moment, I don’t think anyone – not even Microsoft – knows for sure. The decision is going to be market-driven: What the customer wants is going to determine where Office goes. The next three to five years will tell the story.
Of course, Microsoft is going to push strongly in the direction it wants Office to go. And that direction is a product line over which Microsoft retains full control. Rather than selling software outright, customers should pay a regular subscription in order to use products. The software is installed via an Internet connection, automatically configured and updated (although we currently still have the ability to changes these options).
If Office is used in a browser – the “web apps” – nothing is installed locally. In this scenario, the user has no option to customize Office using VBA or add-ins. The same is true for the “Surface” version running on a touch screen. The user is limited to the product as it’s presented, plus any “apps” he buys or subscribes to. But these can only insert information into the current selection – they can’t do anything else. As far as security goes, this restriction is a good thing; but if the user needs to optimize his work environment, it will get in the way.
Depending on how many people don’t mind working this way, vs. those who prefer a customizable environment, Office will evolve as Microsoft envisions… or it won’t.
So, if that’s what Microsoft wants, why hasn’t it forced the issue and totally removed the programming interfaces this time around? For the same reason .NET languages never replaced VBA as the programming environment for Office: legacy applications. A lot of resources have been invested around the world in application extensions that streamline business. No company is going to throw these out the window and invest in the new technology when what they’ve already paid for is doing the job. If Microsoft would insist, companies would simply not upgrade to newer versions of Office.
What does all of this mean to the Office developer who wants to prepare himself for future markets? Can he stick to VBA? What technologies and programming language should he learn?
Right now, the only sure thing is the new Office Open XML file format. That’s certain to be with us for some time to come. Anyone who needs to generate or mine information from Office documents should be seriously considering learning how to programmatically come to grips with these file formats. While they weren’t originally developed to be worked with by “the masses”, the development and release of the Open XML SDK has made Office documents much more accessible. With the VBA developer’s in-depth knowledge of how his application works and constructs its files, he has a head start in understanding the file format’s internal structures and the Open XML SDK classes that work with it.
What’s the learning curve? VB.NET or C#, for starters. Migrating to VB.NET isn’t too hard for people with a solid background in classic VB and object-oriented programming principles. There are things to learn (and unlearn), but much of classic VB is accessible and can be used instead of the .NET Framework functionality.
Learning how to work with the Open XML SDK is a somewhat greater challenge, mainly because there aren’t any books or real tutorials available (at least, not that I could find).
I’ve been playing with the idea of writing a book on the subject, but so far no publisher has been interested. If there’s enough interest, I might work on a tutorial and make it available on my website…