9
votes

My application has a feature to export to Microsoft Word, but it hasn't worked since I've upgraded from Microsoft Office 2010 to Microsoft Office 2013.

Here is the code:

Microsoft.Office.Interop.Word.Application appVersion = new Microsoft.Office.Interop.Word.Application();
appVersion.Visible = false;

and this is the error message:

Unable to cast COM object of type 'Microsoft.Office.Interop.Word.ApplicationClass' to interface type 'Microsoft.Office.Interop.Word._Application'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{00020970-0000-0000-C000-000000000046}' failed due to the following error: No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)).

Someone told me to edit the registry, but the IID "{00020970-0000-0000-C000-000000000046}" does not exist in my registry.

4
That's what the exception message means, COM could not find the registry key either. Reinstall after trying to find out why the registry is corrupted. And do try to run code on an STA thread, this marshaling isn't very cheap.Hans Passant

4 Answers

5
votes

Running a repair installation of Office usually resolves that issue.

1
votes

I had the exact same problem and reinstalling Office 2013 solved my issue.

1
votes

I switched from using Word Interop to using Late Binding. Quick fix that didn't affect refactoring a lot of code...

Before:

OfficeWord.Application msword = new OfficeWord.Application();

After:

Type wordType = Type.GetTypeFromProgID("Word.Application");
dynamic msword = Activator.CreateInstance(wordType);

Solved my issues on a bunch of corporate computers that started seeing this problem after an Office upgrade by Client Support.

-1
votes

Old question, however I ran into the same thing, same exact error message when trying to create a new word application. The problem was simple, once I closed VS in frustration and went to do other work. When I opened word, it had retrieved documents that had not been saved when Word closed down and wanted to know what I wanted to do with them. I told it to delete them, closed word and my code worked fine. Still working on a way around this but I thought I would drop this in here to save someone else from reinstalling office when it was something simple.