Well, for starters, Word is an application, and HTML is a language. That makes them a bit difficult to compare–it’s a bit like wondering whether Visual C++ is a programming language. It’s not, because it’s an application.
I think you meant to ask “Is the markup used to make the native Word file format a programming language?”. It seems odd, but to be logically consistent, I suppose I have to say yes. It’s similar to postscript and HTML in purpose and ability.
What seems to be the defining characteristic for most folks is Turing-completeness. Roughly speaking, that’s the ability to do anything that can be written in C. I think we all agree that anything with that property is a programming language.
Most people also tend to think of imperative languages first, but Prolog and Lisp are good examples of non-imperative languages that everyone would pretty much have to count.
The fact that some languages are interpreted rather than compiled (or rather, some are interpreted by software and others by hardware) is also not particularly relevant. perl and C are both programming languages.
The area of contention is whether Turing-incomplete languages fit the bill. What about a language to describe a series of mouse and keyboard inputs? I wrote something like that once–it was actually a C++ class that would simulate a user interacting with a Windows app.
I maintain that any set of strings that can instruct a computer as to what to do are a programming language. I realize that this is not what most people have in mind, but I don’t know of any definitions that agree with people’s intuition.
Just FYI, I’m actually in the process of designing a simple scripting language, and it’ll end up being very close to Turing complete (it needs arithmetic and logical operators first), although limited in its intended scope. So I have put some thought into this and other related matters, and I may be something more than just a crackpot.