Saltar al contenido

Pegar un rango de Excel en un correo electrónico como imagen

Solución:

Aquí hay un ejemplo trabajado, probado en Office 2010:

ingrese la descripción de la imagen aquí

'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:

ingrese la descripción de la imagen aquí

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:

ingrese la descripción de la imagen aquí

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:

ingrese la descripción de la imagen aquí

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *