H o la : Te anexo mis comentarios y una macro para pegar la información.
Esta instrucción no está almacenando la copia en una variable:
cuerpo2 = Selection.Copy
Lo que hace simplemente es copiar la celda seleccionada, en este caso la celda B5.
Lo mismo con esta instrucción.
Cuerpo Selection. Copy
No estás almacenando la selección en la variable Cuerpo, por lo tanto no puedes simplemente poner en el Body del correo esto:
Parte2. Body = Cuerpo
Lo que se hace en estos casos es copiar; y pegar lo copiado en el cuerpo del correo de esta forma:
SendKeys "^v", True
Lo que está indicando es que envíe el juego de teclas Control v, para que se realice el pegado.
Pegar de esa forma la información, tampoco resulta lo más conveniente, ya que depende de la versión de office, de windows, de la velocidad de tu máquina, de la memoria. En ocasiones no pega la información de manera rápida y envía el correo si la información. Lo que se hace en estos casos es poner una pausa en la macro para que le dé tiempo a outlook de abrir el correo y entonces pegar la información, para la pausa se puede utilizar esta instrucción:
Application. Wait Now + TimeValue("00:00:02")
Te anexo la macro completa para copiar, abrir el correo, pegar, enviar y pasar al siguiente registro.
Sub EnviarCorreo()
'Por.Dante Amor
Application.ScreenUpdating = False
f = 5
u = Range("A" & Rows.Count).End(xlUp).Row
Do While Cells(f, "B") <> ""
If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
Range("E2") = Cells(f, "B")
Range("A83:R" & u).AdvancedFilter Action:=xlFilterInPlace, _
CriteriaRange:=Range("E1:E2")
u2 = Range("A" & Rows.Count).End(xlUp).Row
If u2 > 83 And Cells(f, "C") <> "" And Cells(2, "G") <> "" Then
Range("A83:R" & u2).Copy
Set dam = CreateObject("Outlook.Application").CreateItem(0)
dam.to = Cells(f, "C")
dam.Subject = Cells(2, "G")
dam.Display
Application.Wait Now + TimeValue("00:00:02")
SendKeys "^v", True
dam.Display
dam.Send
End If
f = f + 1
Loop
MsgBox " se mandaron los correos verificar informacion"
End Sub
Si no te funciona, incrementa el tiempo de espera a 5 segundos, por ejemplo:
Application. Wait Now + TimeValue("00:00:05")
Si aún no te funciona, entonces se puede enviar la información de otra manera, puede ser por Html o copiar la información en un archivo nuevo y enviar el archivo en el correo.
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias