Страницы: 1
RSS
VBA Outlook: скопировать изображение из письма
 
Добрый день!

Пытаюсь средствами VBA скопировать картинку из тела письма в Outlook. Пока что имею следующее:
Код
Private Sub Image1_Click()
    UserForm1.Hide
    Set objNamespace = Application.GetNamespace("MAPI")
    Set objFolder = objNamespace.GetDefaultFolder(olFolderInbox).Folders("Моя папка")
    objFolder.Items("test3").GetInspector().WordEditor.InlineShapes.Item(1).Copy
    Set objDoc = Application.ActiveInspector.WordEditor
    Set objSel = objDoc.Windows(1).Selection
    objSel.Paste
End Sub

Идея такая: когда пользователь печатает письмо, он может нажать на кнопку, вызвать форму и там выбрать миниатюру картинки, которую хочет вставить в письмо (туда где находится курсор).
Допустим пользователь ткнул на картинку (Image1). Тогда макрос должен зайти в письмо "test3" в папке "Моя папка" и скопировать оттуда первую картинку по порядку.

Мне удалось добраться до нужной картинки (item(1) в коде выше), но я не могу её скопировать в буфер. Макрос останавливается на пятой строке и пишет, что объект не поддерживает этот метод.

Подскажите, пожалуйста, как обратиться с этой картинке так, чтобы можно было её скопировать в буфер.
Ну или каким-нибудь другим способом вставить картинку на место курсора...

Спасибо!

PS Ошибся с категорией, прошу прощения) Не нашел как переместить тему
Изменено: theOzymandias - 04.10.2019 16:50:46
 
Код
Sub saveImage()
    Dim strPath$
    Dim at As Attachment
    Dim ii As MailItem
    
    Set ii = ActiveExplorer.Selection.Item(1)
    strPath = "insert your path here"
    
    For Each at In ii.Attachments
    Debug.Print at.DisplayName
    If at.DisplayName Like "*.png" Then at.SaveAsFile
    Next
End Sub

Сохраните картинку на жесткий диск, а потом вставьте в письмо. После окончания процедуры картинку можно удалить, например через kill.
С уважением,
Федор/Все_просто
 
Доброе время суток
Цитата
theOzymandias написал:
что объект не поддерживает этот метод.
И правильно пишет - нет у InlineShape (объектная модель Word к изучению) метода Copy. Используйте
Код
objFolder.Items("test3").GetInspector().WordEditor.InlineShapes(1).Range.Copy
 
Всем спасибо за ответы!
Цитата
Андрей VG написал:
objFolder.Items("test3").GetInspector().WordEditor.InlineShapes(1).Range.Copy
Андрей, это как раз то, что я искал. Спасибо!
Страницы: 1
Наверх