Office Development–The Good, The Bad and The Ugly?

Office Development - Good Bad Ugly

In my last post we’ve seen that there are just a whole list of options covered under Office Development. Just to get a starting point we start to focus on Office add-ins –without the capital A– first. With Office add-ins I mean Office add-ins in general, that is … from the early start to where we are today.

I know that these days the name Office Add-ins is considered to be the part where Office Add-ins are built using the OfficeJS APIs but in the early years you had Office add-ins in many forms and technologies.

The Ugly

Initially the only option to customize Office was by adding code using Microsoft’s Visual Basic for Applications (VBA). This was, or should I say is – it still exists and you can still use it, the embedded code engine running a subset of the full Visual Basic command set capable in addressing the Office Object Model to quickly build some Office automation functions to make life as an Office Worker easier. The language appeared to be very powerful and in the real world people built some crazy complex stuff with it.

The Bad

To add more structure to building Office add-ins a new development paradigm was developed. Still using the Office Object Model but this time using the managed languages such as VB.NET or C Sharp (C#).

Managing code with VBA could be a pain in the … Code traveled with the documents and when the document was copied another ‘branch’ was created and you would never know you were working on the latest version unless you managed your distributions very strictly. Also the declaration of variables wasn’t always enforced causing all sorts of runtime errors to surface just after releasing the production code.

By using this new way to build your Office add-ins or customizations (I will return on customizations vs. add-ins later in a separate blog post, that’s a story on itself) with the new tools: Microsoft’s “Visual Studio Tools for the Microsoft Office System” (VSTO) at least you had a better control over your source code and you could even use Source Control to keep track of your code versions.

With this, the first versions of VSTO, seemed to be very hard when it came to installing the add-ins. Security was improved a lot, but that came at the high price of tough installation issues.

The Good

In these days, deploying add-ins can’t be limited to the Windows Platform so another change was rising … these are the add-ins built using the combination of well known web technologies and by including a Manifest you are now able to run your Office Add-ins (with the capital A) on all platforms in all supported and still growing number of client applications. Currently the client applications are Excel, Outlook, PowerPoint, Word and recently added Project, Access and OneNote.


Are these three technologies really The Good, The Bad and The Ugly? Well no, obviously not, you can still build add-ins in all three of these technologies but VBA for instance always had a very bad name, also caused by virus developers using this technology to harm innocent computer users by exploiting the technology to take over the computer and in worst case disable it.

VSTO was considered to be a real improvement but this technology also had his downsides. Deployment could be really hard, but this improved in later versions. Still going multi platform was no option for VSTO.

So is all good with the OfficeJS add-ins? Again, not at all … for starters these technologies used here are in general very hard to understand when you come from the VBA or managed code languages. Also, the APIs are not fully completed.

It still isn’t possible to do all the things that you could do with VSTO. With VSTO there is not really a limit. Whatever you can do with managed code you can do with VSTO as it just is interfacing between Office and .NET. This of course in itself could be very dangerous and should be managed to the max. Also VSTO is used by shady guys building malicious code.

We will get more in detail (we are still diving in, going deeper and deeper at this time) in my following blog posts so subscribe and join me in this adventure called Office Development!

Office Development 2017

Office Dev Center

After many years of Office Development, starting with Excel Functions, VBA, COM (VSTA/VSTO) it is time to dive in and see how things are in done in 2017. What are your options, is it still possible to do things in VBA or doesn’t it exist anymore?

In my upcoming blog posts I want to look at the options available and look at the Office Platform in general. What clients are there these days and on what platform do they run.

The world changed a lot in the last decade and Microsoft Windows is not the only platform anymore. There is iOS, Android, MacOS, Windows … even Linux distributions are growing in popularity.

Even if you just look at it in the online (web) world many of the ‘old’ clients are now available in an Online version. Think of Word Online or Excel Online where you get your editor or spreadsheet application running in a browser application. Again, not so easy as you might think … browser applications should be running in a wide variety of browsers. Do they run in Internet Explorer, Chrome, Safari, Opera etc. etc.

My goal with these Office Development blogposts is also maybe a bit selfish … coming from the ‘old’ (as you might discover) VSTO world, or even older VBA world, I need to polish my knowledge around the current options available and I can already tell you that this ‘new’ Office Development world is huge compared to what it was as the number of clients increased dramatically with the operating systems that I mentioned above, but there is also a huge amount of mobile applications for Android, iOS and (currently not so many for) Windows Mobile.

So … a big challenge. I have no idea where this ends because Office Development these days also include developing for Microsoft Graph (it was Office Graph before, but it was revamped into Microsoft Graph this year, growing bigger than it already was), SharePoint Framework or Office Connectors to extend your Groups or Teams.

That said, stay tuned and feel free to share your comments, tips or complaints in the comments section below!

For now, your starting point for Office Development (next to my blog off course) is:  

Back to Blogs … Installing Live Writer 2012

I lost my blogging tools in the process of testing Windows 10 and or reinstalling machines. I now finally came to install Live Writer back on my machine.

I am working on getting my way around Office365 Development. It appears that developing using VBA and VSTO Add-ins is soooo year 2000, time to move forward Winking smile.

Well, the real story is that in my day job I’m still on VSTO but it probably doesn’t come as a surprise if I say that Microsoft already spent at least four years (plus) by now on creating a new Add-in platform that is ready to target X-Platform (Windows, IOS, Android) development.

They still have a long way to go, many items within the current (COM) object model still needs to be addressed, but as time is moving forward the Office Development Team is making great progress in adding new features every day hopefully in the end getting in par with the VSTO capabilities. And let’s be real, the Office365 scope of today is so much bigger than the scope of the ‘old’ Office.

Anyway, I got rebooted, and if you can read this I was able to get Live Writer 2012 installed and to be ready for future posts.

Oh, and this is how I installed Live Writer – in case you want to join me and start your own blog:

[Thanks to Stefan to help out here:]

VSTO Runtime Update (10.0.50325)

The Visual Studio Developer Division just announced a new version of the VSTO (Visual Studio Tools for the Office System) Runtime (10.0.50325).

One of the issues, the one when using WPF controls caused a massive delay in closing Office applications, I worked close with the team to test and get this solved. The issue also reported on Connect was a hard one to fix as it depended on many factors such as Touch Screen interfaces and appeared on previous versions of the Runtime.

The second issue addressed by this update covers the publisher’s name and verification status to show properly when using SHA256 code-signing certificates where the Trust Prompt at first displayed “Unknown Publisher” even when the publisher was fully trusted.

Read more about the Runtime Update at the blog from the VSTOTeam located at:
VSTO Runtime Update to Address Slow Shutdown and “Unknown Publisher” for SHA256 Certificates 

You can download the latest version of the VSTO Runtime at and will be distributed as part of Windows Update.

I for one am very happy to see this solved and released to the public. Our enterprise firm encountered the WPF issue on a large scale just after deploying our top of the bill new laptops to all of our users and would like to thank the VSTO Team for working with us to get this out of the way! We really spent a huge amount of hours in this to cover all the scenarios we could think of in both new and older (existing) add-ins.

Showtime: The Book Thief

The Book Thief

The “Showtime” section on my blog is a reminder, mostly for my own reference but maybe helpful for other film enthusiasts as well, to remember what movies I’ve seen lately, what it was about and how I rated it in general.

The Book Thief is about a little girl, unable to read and write at her early years to be abandoned by her mother in times of war in the 1930’s. While living at her foster parents home she learns to read and write and especially gets the affection to read books. To be able to read books she steals (or borrows) the books and was called “The Book Thief” by one of her neighbor boys.

the perspective of a German family in war time isn’t used in many films. Especially a family giving shelter to a Jewish refugee in a city of Germany is a less common thing to project.

The movie is highly (maybe over-)dramatized, displaying some intense situations people had to go through when the world was at war. Although the level of dramatization could be a bit less overall it is a touching story. The girl playing Liesel Meminger (Sophie Nélisse) is a rising star and I think we haven’t seen the last of her yet.

I expected the movie, given the amount of nominations, to be somewhat better and rate it a high six out of ten.

New Office REST APIs and Developer Tools for Visual Studio Update

Tonight (here in Europe that is) Somasegar announced on his blog that the Visual Studio Team and the Office Team released a “number of significant updates for developers building apps that interact with the Office ecosystem”.

All of the updates are more or less related to building Apps for Office/SharePoint and the Cloud. If you need full integration (interacting between Word and Excel, building compound documents, Ribbon interaction etc.) I think you still need to use the ‘other’ option, VSTO. The downside of –that- however is that it won’t be as mobile a you’d like to see. You win some or lose some, depending on the technology you decide to use.

Back to the updates… Announced today were the new Office 365 APIs for consuming Office data and updates of Office Developer Tools for Visual Studio (not to be confused with Visual Studio Tools for the Office System aka VSTO, that is a complete other thing) and “Napa”.

Go and read the blogs for details on all of this,  no need for me to repeat all of it Glimlach

  • The Office 365 Platform blog
  • The Visual Studio blog
  • This year I’ll try to deep dive on this a bit more to get into the subject of replacing your current Add-ins with Apps for Office/SharePoint – Can you or can’t you? Where are we at the moment. Everyone wants to move their Add-ins into the Cloud, but is it even possible today? More on this later …

Showtime: Philomena


The “Showtime” section on my blog is a reminder, mostly for my own reference but maybe helpful for other film enthusiasts as well, to remember what movies I’ve seen lately, what it was about and how I rated it in general.

Philomena is a movie nominated for 4 Oscars and a whole slew of other rewards. You wouldn’t expect that by just watching the trailer of the movie.

The movie is about a woman who got pregnant at a very young age and therefor was put away in a Catholic convent where her son was born. Shortly after that her son was taken away from her for adoption.

Journalist Martin Sixsmith started to follow Philomena’s story and together with Philomena he started their search for her long lost son who appeared to have been adopted by an American family. On the search they travel to the United States where they tried to find his current location.

The story of a mother searching for her son changed from a series of facts into an emotional piece of art where spectators in the audience had a hard time to keep it dry. In a silent moment you could hear a soft crying from all directions. The producer managed to touch the hearts of many with this drama. Nine out of Ten, highly recommended !

Office templates not available in VS2012 with ‘converted’ project.

Some time ago I hit a somewhat strange issue where I opened one of our existing projects targeting Office 2010, .NET 4 Client in Visual Studio 2010 and moved this project forward to Visual Studio 2012. After the migration I did not see the Office templates in the Add New Item dialog in Visual Studio 2012.

When adding a ‘new item’ to the project it did not display the Office options to insert a Ribbon for instance:


When you create a -new- project, the Office Templates show up without issues:


What we see here is a minor issue in the migration code in Visual Studio 2012 and is relatively easy to solve by manually editing the .csproj project file.

What you need to do here to fix this minor issue is to go and look for the entry in the project file called AddItemTemplatesGuid. The migration code changed the AddItemTemplatesGuid property from


Changing it back to the original value makes the Add Item dialog start showing Office category correctly again. So the right Guid should be: "{51063C3A-E220-4D12-8922-BDA915ACD783}”

You can easily check this by creating a small new AddIn project, open the project .csproj file in your editor and search for the AddItemTemplates Guid again. You will see that it is the “{51….” one as specified above. Even better, if you go back into your source control software (TFS or other source control option) environment and look at the value in your original file before migration.

So if you also encounter the fact that you don’t get the Office Templates when adding a New Item in your Office project, dive right in to your .csproj file and change the AddItemTemplatesGuid back to its original value the one that was there before migrating your code.

An update rollup is available for Visual Studio 2010 Tools for Office Runtime 4.0

Today a rollup update for Visual Studio 2010 for Office Runtime 4.0 that was auto-magically released November 13th has been deployed to (at least one of) my machines.

This rollup fixes about four issues with the Visual Studio 2010 Tools for Office Runtime and one fix in particular of a bug that I found and posted on Connect:

We worked close with the VSTO development team to identify and isolate the issue and they were able to solve it for us to allow us to continue working with the runtime.

The issue isn’t touched a lot beside our organization (it is a specific user scenario not used by many others) so distribution of the fix was ‘delayed’ until deployment of yesterdays rollup (a hotfix could be requested for in case you ran into it).

So as of yesterday the fix became available for everyone along with a couple of other fixes. Again, probably not many of you will notice any differences but I’m sure the users using one or more of the fixed features will be pleased to see it released in the main branch of the product.

If you want to download the VSTO Runtime on your own, not waiting for Microsoft Update or WSUS you can download it at the Microsoft Download Center.

On a side note, also Office 2013 tooling was released this week to enable you to build VSTO solutions targeting Office 2013 but I will spend some time on that in a separate blog post.

%d bloggers like this: