@SteveRichter: VBA exists now solely for backwards compatibility. It's a horrendously crufty language, with almost as many quirks as the actual Office Object Model itself. VSTO was an attempt to somewhat modernize things by encouraging people who were currently building horribly overcomplicated applications in VBA (I know this pain, I have to work on one from time to time!) to something closer to .NET development, but it never really took off fully. I think that is not insignificantly down to the fact the Office automation is horribly flaky, so it's borderline impossible to actually build a robust solution on it, regardless of the language.
Yeah, the flakiness is what always killed it for me ... all the Office automation stuff I've built had to include a lot of "if operation foo randomly fails, retry a few times and then try fallback solution XYZ" sort of logic. It felt like a nondeterministic environment, and maybe if I had a deeper understanding it wouldn't anymore, but there never seemed to be any clear path to get one (other than join the Office team and get access to the code ...)