Я должен признать, что использую это в Outlook 2003, но, пожалуйста, посмотрите, работает ли он и в 2007 году:
Вы можете использовать MSForms.DataObject для обмена данными с буфером обмена. В Outlook VBA создайте ссылку на « Библиотека объектов Microsoft Forms 2.0 » и попробуйте этот код (вы, конечно, можете прикрепить Sub () к кнопке и т. Д.):
Sub Test()
Dim M As MailItem, Buf As MSForms.DataObject
Set M = ActiveExplorer().Selection.Item(1)
Set Buf = New MSForms.DataObject
Buf.SetText M.HTMLBody
Buf.PutInClipboard
End Sub
После этого переключитесь в Excel и нажмите Ctrl-V - поехали!
Если вы также хотите найти работающее приложение Excel и автоматизировать даже это, дайте мне знать.
Всегда существует действительный HTMLBody, даже если письмо было отправлено в виде обычного текста или RTF, и Excel отобразит все текстовые атрибуты, передаваемые в HTMLBody, включая. столбцы, цвета, шрифты, гиперссылки, отступы и т. д. Однако встроенные изображения не копируются.
Этот код демонстрирует основы, но не проверяет, действительно ли выбран MailItem. Это потребовало бы большего кодирования, если вы хотите, чтобы оно работало и для записей календаря, контактов и т. Д.
Достаточно, если вы выбрали почту в списке, вам даже не нужно ее открывать.