У меня есть шаблон Word 2007, который я использую как Normal.dotm, в котором есть корпоративная тема, стили и т. Д., А также небольшой кусочек макрокода, который отменяет поведение по умолчанию кнопок с маркерами и цифрами на ленте.
Теперь я хотел бы использовать этот же шаблон при создании электронных писем в Outlook 2007. Я попытался просто скопировать мой Normal.dotm в NormalEmail.dotm, и в некоторой степени это работает, но хотя мой макрос работает правильно вызывается , когда я нажимаю кнопки с маркером / цифрой в редакторе электронной почты, выдает ошибку:
Ошибка времени выполнения 429: компонент ActiveX не может создать объект
При дальнейшем исследовании кажется, что все, что я делаю в своем макросе, который ссылается на объект в обычной объектной модели Word (Приложение, Выбор и т. Д.), Вызывает эту ошибку.Так что, даже если мой макрос состоит из следующего, он все равно не работает:
MsgBox TypeName(Application)
У меня есть подозрение, что это потому, что я работаю в контексте Outlook, а не Word, и, возможно, естьНет (Word) приложения, или любой из объектов, связанных с ним.Я знаю, что редактором электронной почты в Outlook является Word-но-не-как-мы-знаем-Джим.
Сказав это, я обнаружил, что ThisDocument действительно возвращает действительныйОбъект документа;к сожалению, он соответствует самому шаблону, а не редактируемому электронному письму.
Методом проб и ошибок я обнаружил, что могу получить документ, соответствующий электронному письму, по следующему окольному маршруту (при этом отображаетсятекст в электронном письме):
MsgBox ThisDocument.MailEnvelope.Item.Application.ActiveInspector.WordEditor.Content.Text
Однако этот код, по-видимому, также вызывает Outlook длясбой - не в то время, а позже, когда вы закроете Outlook.
На данный момент я почти готов признать поражение.Без сомнения, «правильный» способ создания макросов в Outlook - это создание их в самом Outlook, но из моего ограниченного опыта это просто ужасно .(Вы можете создавать макросы в VBA, но не можете их развертывать; или вы можете создавать их в VSTO, но тогда вам нужен установщик, а не просто развертывание шаблона).
Итак.Есть какие-нибудь идеи, которые позволили бы мне сделать все, что я надеялся сделать?
- Переопределить поведение кнопок с маркером / цифрой на ленте в редакторе электронной почты.
- Развернутьмакросы в файле NormalEmail.dotm, вместо того, чтобы их «устанавливать».
- Не сбой Outlook.