Outlook 2007 - макрос VBA в NormalEmail.dotm - PullRequest
2 голосов
/ 11 ноября 2011

У меня есть шаблон 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, но тогда вам нужен установщик, а не просто развертывание шаблона).

Итак.Есть какие-нибудь идеи, которые позволили бы мне сделать все, что я надеялся сделать?

  1. Переопределить поведение кнопок с маркером / цифрой на ленте в редакторе электронной почты.
  2. Развернутьмакросы в файле NormalEmail.dotm, вместо того, чтобы их «устанавливать».
  3. Не сбой Outlook.

Ответы [ 2 ]

0 голосов
/ 12 апреля 2016

В Outlook 2007 может также потребоваться добавить ссылки VBA на «Библиотеку объектов Microsoft Word 12.0» и, возможно, «Библиотеку объектов Microsoft Forms 2.0». Другие версии могут применяться для других версий года.

Кроме того, в макросе / коде вы должны установить объекты для получения / использования правильных методов и свойств.

Я не программист OO и обычно копирую код из другого места и изменяю для своих нужд, поэтому я не могу помочь намного больше, чем я сказал выше. (И один из моих макросов также выдает мне ту же ошибку 429, что и вы.)

0 голосов
/ 16 ноября 2011

Вы пытались добавить ссылку в редакторе VBA в библиотеку объектов Microsoft Outlook?

...