Solución:
Aquí hay un ejemplo trabajado, probado en Office 2010:
'Copy range of interest
Dim r As Range
Set r = Range("B2:D5")
r.Copy
'Open a new mail item
Dim outlookApp As Outlook.Application
Set outlookApp = CreateObject("Outlook.Application")
Dim outMail As Outlook.MailItem
Set outMail = outlookApp.CreateItem(olMailItem)
'Get its Word editor
outMail.Display
Dim wordDoc As Word.Document
Set wordDoc = outMail.GetInspector.WordEditor
'To paste as picture
wordDoc.Range.PasteAndFormat wdChartPicture
'To paste as a table
'wordDoc.Range.PasteExcelTable LinkedToExcel:=False, WordFormatting:=False, RTF:=False
Resultado:
En el código anterior utilicé el enlace anticipado para tener acceso a autocompletar; para utilizar este código, debe establecer referencias a las bibliotecas de objetos de Microsoft Outlook y Microsoft Word: Instrumentos > Referencias ... > establecer marcas de verificación como esta:
Alternativamente, puede olvidarse de las referencias y usar el enlace tardío, declarando todos los objetos de Outlook y Word As Object
en lugar de As Outlook.Application
y As Word.Document
etc.
Aparentemente, tiene problemas para implementar lo anterior; el rango se pega como una tabla en lugar de una imagen en su mensaje de correo electrónico. No tengo una explicación de por qué sucedería eso.
Una alternativa es luego pegar como una imagen en Excel, y luego cortar y pegar esa imagen en su correo electrónico:
'Copy range of interest
Dim r As Range
Set r = Range("B2:D5")
r.Copy
'Paste as picture in sheet and cut immediately
Dim p As Picture
Set p = ActiveSheet.Pictures.Paste
p.Cut
'Open a new mail item
Dim outlookApp As Outlook.Application
Set outlookApp = CreateObject("Outlook.Application")
Dim outMail As Outlook.MailItem
Set outMail = outlookApp.CreateItem(olMailItem)
'Get its Word editor
outMail.Display
Dim wordDoc As Word.Document
Set wordDoc = outMail.GetInspector.WordEditor
'Paste picture
wordDoc.Range.Paste
Como señala WizzleWuzzle, también existe la opción de usar PasteSpecial
en lugar de PasteAndFormat
o Paste
…
wordDoc.Range.PasteSpecial , , , , wdPasteBitmap
… pero por alguna razón, la imagen resultante no se procesa tan bien. Vea cómo la tabla inferior está un poco borrosa: