|
VBA Outlook: Как открыть сообщение для редактирования через объектную модель Word?
|
|||
---|---|---|---|
#18+
Добрый день! Подскажите, плиз, как открыть сообщение (MailItem) для редактирования через объектную модель Word (через свойство Inspector.WordEditor)? (сообщение не новое - а старое, полученное или уже отосланное) Outlook 2010. Руками это делается в окне чтения сообщения в ленте через Сообщение - (Переместить) - Действия - Изменить сообщение. А как это сделать программно? В приведенном ниже коде попытка wdRange.InsertAfter - приводит к ошибке "Run-time error '4605': Метод или свойство недоступны, поскольку документ заблокирован для редактирования." Посмотрел, в wdDoc.ProtectionType стоит "wdAllowOnlyReading". А если вручную открыть на редактирование - то "wdNoProtection". Но попытка сделать wdDoc.Unprotect приводит к ошибке "Run-time error '4605': Данная команда недоступна." В свойствах MailItem или Inspector ничего подходящего не вижу. Если сделать "Изменить сообщение" руками - то приведенный код работает. Подскажите, плиз! Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2017, 13:46 |
|
VBA Outlook: Как открыть сообщение для редактирования через объектную модель Word?
|
|||
---|---|---|---|
#18+
Сам пока нашел 2 решения, но оба не достаточно хороши. - wdDoc.Unprotect Оказывается, работает на части писем. Больше половины, но не на всех. К тому же, при попытке сделать wdRange.Find.Execute Outlook "падает" (не на каждом письме, но быстро Улыбка) И эта команда делает всё же не то, что делает кнопка. Сообщение на редактирование открывается, но вордовские вкладки над лентой не появляются. - открыть Inspector и сделать SendKeys Код: vbnet 1. 2.
Делает то, что нужно. Но делает это долго (на каждое письмо от секунды до нескольких), и может не всегда срабатывать. Хотелось бы всё же как-то делать через объектную модель (скорее всего объекты Outlook, но может быть и Word), но уже всю голову сломал, КАК. Подскажите, плиз! ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2017, 13:47 |
|
VBA Outlook: Как открыть сообщение для редактирования через объектную модель Word?
|
|||
---|---|---|---|
#18+
Пока не нашел то, что нужно, прям в самих объектах. Но нашел, как через объекты симулировать нажатие "Изменить сообщение" без SendKeys: Код: vbnet 1.
Ну и что-то типа такого при имеющемся MailItem: Код: vbnet 1. 2. 3. 4.
(DoEvents, возможно, не нужно) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2017, 13:57 |
|
VBA Outlook: Как открыть сообщение для редактирования через объектную модель Word?
|
|||
---|---|---|---|
#18+
Можно так: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8.
Здесь On Error Resume Next используется для случая, когда сообщение уже редактируется ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2017, 20:09 |
|
VBA Outlook: Как открыть сообщение для редактирования через объектную модель Word?
|
|||
---|---|---|---|
#18+
ZVI, Благодарствую! А не подскажете, откуда берется ID:=5604? Если в след. раз нужно будет нажать другую кнопку, как узнать ее ID? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2017, 13:09 |
|
VBA Outlook: Как открыть сообщение для редактирования через объектную модель Word?
|
|||
---|---|---|---|
#18+
И есть ли какие-то ощутимые отличия этого метода от приведенного выше? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2017, 13:13 |
|
VBA Outlook: Как открыть сообщение для редактирования через объектную модель Word?
|
|||
---|---|---|---|
#18+
В Office 2003 были пункты меню со своими ID и Caption. Пункт [Изменить сообщение] c ID = 5604 был в меню [Правка]. Начиная с Office 2007 вместо меню появилась лента. Но все меню, как те суслики в поле, хоть и не видны, но они точно там есть. Посмотреть ID можно таким кодом: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
Принципиальных отличий от ExecuteMso нет, разве что более прямое обращение к методу. Еще предложенный код не требует, чтобы было открыто сообщение, он сам его откроет. Не агитирую, используйте то, что понравится :) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2017, 17:17 |
|
VBA Outlook: Как открыть сообщение для редактирования через объектную модель Word?
|
|||
---|---|---|---|
#18+
ZVI, благодарю! Если что, я не ставлю под сомнение - просто пытаюсь разобраться. Сам несколько дней как узнал вообще про существование CommandBars, так что поле для меня неизведанное :), а с информацией по теме как-то не густо... Сам подсмотрел про ExecuteMso у Уокенбаха (Уокенбах Дж. Excel 2010. Профессиональное программирование на VBA. 2012, Глава 22, с. 691 и далее - если кому будет интересно). Он предлагает "подсматривать" нужное название элемента управления в меню Настройка ленты во всплывающей подсказке. В отношении Аутлука надо учитывать, что меню относятся к Explorer / Inspector и у них они разные. (это я так, для тех, кто будет гуглить эту тему, как я неделю назад :)) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.02.2017, 05:57 |
|
|
start [/forum/topic.php?fid=60&fpage=17&tid=2155327]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
35ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 144ms |
0 / 0 |