When Microsoft (like most companies) goes to write a new version of a piece
of software, they rarely throw out all of the old code and build the new
product from scratch. If they were doing so, then yes, they could easily
build Word in C#, VB.NET or any other language for that matter, but they
don’t throw it all out, and because of all of the legacy code that remains it
becomes near impossible to rewrite it in a different language (because of the
costs involved) and they are forced to remain within it for the most part and
stick to the original language. It is still possible to use other languages
to build add-ons which often happens, but for the main app, it’s C++ and will
be for quite a while.
In the .NET world it is possible to combine languages to a certain extent.
You can build a class in C# and compile it to a DLL that is used by another
class you wrote in VB.NET and that is compiled to a 2nd DLL. A little later,
you might decide to use both in a Managed C++ application. All is possible
because all .NET languages compile to the Microsoft Intermediate Language
(aka MSIL), and at the MSIL level, all languages are equal and can share code
freely with each other, when using older languages such as C++ and VB, it is
possible, just not as easy.
Brendan