1. Внимательно прочитай мою подпись по поводу форматирования кода на форуме. Это обязательное требование.
2. В этой строке как минимум две ошибки:
if (e.GlobalCommandName.ToUpper().Equals("_close"))
a) Ты переводишь строку в прописные буквы и сравниваешь со строкой из строчных букв.
b) Глобальное имя команды "CLOSE", а не "_CLOSE".
3. Не достаточно один раз подписаться на событие запуска команды в одном документе. Нужно подписаться на события создания/удаления документов и в них подписываться/отписываться от CommandWillStart. Это потому, что команда может быть запущена в любом из открытых документов (обычно в том, который в данный момент является активным)