Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 18.11.2015
Сообщений: 13
1

VBA Outlook: Как открыть сообщение для редактирования через объектную модель Word?

04.02.2017, 17:26. Показов 2731. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день!

Подскажите, плиз, как открыть сообщение (MailItem) для редактирования через объектную модель Word (через свойство Inspector.WordEditor)?
(сообщение не новое - а полученное или уже отосланное)
Outlook 2010.

Руками это делается в окне чтения сообщения в ленте через Сообщение - Переместить - Действия - Изменить сообщение. А как это сделать программно?

В приведенном ниже коде попытка sRange.InsertAfter - приводит к ошибке "Run-time error '4605': Метод или свойство недоступны, поскольку документ заблокирован для редактирования."
Посмотрел, в sDoc.ProtectionType стоит "wdAllowOnlyReading". А если вручную открыть на редактирование - то "wdNoProtection".
Но попытка сделать sDoc.Unprotect приводит к ошибке "Run-time error '4605': Данная команда недоступна."

В свойствах MailItem или Inspector ничего подходящего не вижу.
Если сделать "Изменить сообщение" руками - то приведенный код работает.

Подскажите, плиз!

Visual Basic
1
2
3
4
5
6
7
8
Private Sub test1()
    Dim Msg As MailItem, AI As Inspector, sDoc As Word.Document, sRange As Word.Range
    Set AI = ActiveInspector
    Set Msg = AI.CurrentItem
    Set sDoc = AI.WordEditor
    Set sRange = sDoc.Range(0, 0)
    sRange.InsertAfter "[Вставленный текст]"
End Sub
Добавлено через 31 минуту
PS. В аутлуке нет макрорекордера. Посмотреть код ручного нажатия "Изменить сообщение" нельзя
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.02.2017, 17:26
Ответы с готовыми решениями:

Где можно посмотреть объектную модель VBA
Добрый день! Подскажите где можно посмотреть визуально понятную объектную модель VBA. Чтобы было...

Как можно открыть активную ячейку для редактирования (F2) возможностями VBA в Ecxel?
Как можно открыть активную ячейку для редактирования (F2) возможностями VBA в Ecxel? Заранее...

Шаблон письма из Word в Outlook через Excel VBA
Здравствуйте! Подскажите, пожалуйста, можно ли решить следующую задачу и как? Есть файл Excel, в...

Как изменить содержимое тега через объектную модель документа?
Надо с помощью javascript изменить содержимое произвольного тэга: Пример: <tag>содержимое</tag>,...

8
0 / 0 / 0
Регистрация: 18.11.2015
Сообщений: 13
06.02.2017, 16:01  [ТС] 2
На всякий добавлю, что можно, конечно, делать через .HTMLBody, но для основной задачи (функции замены строки1 на строку2) он хуже, т.к. там могут куда-либо вклиниться тэги, а отлавливать их - это отдельный гемор...
К тому же, некоторые письма в HTML выглядят неожиданно (состоят не из нормальных знаков, а из их кодов а-ля & # 1088 ; ).
Короче, надо будет либо писать какой-то мегакод вместо небольшого и понятного, либо доделывать руками.
Модель Word, мне кажется, всё бы решила...
0
0 / 0 / 0
Регистрация: 18.11.2015
Сообщений: 13
07.02.2017, 16:45  [ТС] 3
Всю голову себе сломал.
По 7 раз пересмотрел членов MailItem, Inspector, Application, Word.Document и бог знает чего еще...
Почитал несколько учебников, где про Аутлук пишут... но всё мимо
Ничего не нахожу рабочего

Кажется, нашел решение через SendKeys:
Application.ActiveInspector.Activate
SendKeys "%TCC", True - делает симуляцию нажатия кнопки "Изменить сообщение"

В тесте, вроде, отрабатывает. Надеюсь, и в бою будет...
Но буду рад если кто подскажет решение через объекты всё же!
Т.к. более надежно и понятно. И более быстро, наверное...
0
0 / 0 / 0
Регистрация: 18.11.2015
Сообщений: 13
09.02.2017, 15:21  [ТС] 4
SendKeys работает, но долго.
Так что тема по-прежнему актуальна!

Добавлено через 8 часов 47 минут
Как выясняется, sDoc.Unprotect работает. Но не на всех сообщениях. На каких-то работает, на каких-то нет. От чего зависит, не понятно.

По-прежнему очень надеюсь на ответ, как через VBA в инспекторе сделать "Сообщение - Действия - Изменить сообщение" без SendKeys!
0
5562 / 1368 / 150
Регистрация: 08.02.2009
Сообщений: 4,109
Записей в блоге: 30
09.02.2017, 15:38 5
Цитата Сообщение от alarmos Посмотреть сообщение
Как выясняется, sDoc.Unprotect работает.
Думаете, это ещё у кого-то используется? Вы первопроходец.
0
0 / 0 / 0
Регистрация: 18.11.2015
Сообщений: 13
09.02.2017, 15:53  [ТС] 6
Цитата Сообщение от Sasha_Smirnov Посмотреть сообщение
Думаете, это ещё у кого-то используется? Вы первопроходец.
Думаю, что наверняка используется. Тут вопрос не в какой-то специфической задаче, а чисто в одном действии - разлочить
Наверняка на форуме сидит сотня людей, который знают ответ. Но не говорят
0
5562 / 1368 / 150
Регистрация: 08.02.2009
Сообщений: 4,109
Записей в блоге: 30
09.02.2017, 17:51 7
Кто знает, кто знает… Процентf 93 тут о ВБА-то только что-то слышали, а уж в аутлуке!..
0
0 / 0 / 0
Регистрация: 18.11.2015
Сообщений: 13
11.02.2017, 12:38  [ТС] 8
Странно. Я половину ответов на возникающие вопросы выгугливал на этом форуме

Добавлено через 27 минут
В основном по Excel'ю, правда
0
0 / 0 / 0
Регистрация: 18.11.2015
Сообщений: 13
13.02.2017, 13:54  [ТС] 9
Пока не нашел то, что нужно, прям в самих объектах.
Но нашел, как через объекты симулировать нажатие "Изменить сообщение" без SendKeys:
Visual Basic
1
Insp.CommandBars.ExecuteMso ("EditMessage")
Ну и что-то типа такого при имеющемся MailItem:
Visual Basic
1
2
3
4
Dim Insp As Inspector, MI As MailItem
Set Insp = MI.GetInspector
Insp.Activate: DoEvents
Insp.CommandBars.ExecuteMso ("EditMessage"): DoEvents
(DoEvents, возможно, не нужно)
0
13.02.2017, 13:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.02.2017, 13:54
Помогаю со студенческими работами здесь

Можно как либо открыть файл для редактирования в Excel и в Word?
Можно как либо открыть файл для редактирования в Excel и в Word (но не в браузере)?

Как открыть Word в режиме редактирования?
Собственно вопрос уже прозвучал... Я открываю ворд документ вот так: ShellExecute(Handle,...

Открыть с VB Form БД *.mdb через Access для редактирования
Сразу прошу прощения, если повторяю вопрос и прошу не пинать, но поиск по форуму результатов не...

Как открыть документ Word из VBA-Excel
Господа, есть несколько скромных вопросов, надеюсь на ваше участие: 1) Как открыть док-т Word из...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru