Jump to content
Sign in to follow this  
lowrider

Insertar tabla en correo, no como adjunto

Recommended Posts

Estimados, primero les saludo y felicito a quienes corresponda por mantener este foco de luz encendido (foro).

Tengo una rutina para envío de correos que funciona bastante bien, pero ahora tengo un problema por lo que consulto a ustedes.

Debo seleccionar un rango de una tabla y este rango copiado debe ser insertado en el correo, no como archivo adjunto, sino, como una tabla visible en el cuerpo del correo.

    Dim OutApp As Object

Dim OutMail As Object
Set OutApp = CreateObject("Outlook.Application")
OutApp.Session.Logon
Set OutMail = OutApp.CreateItem(0)
On Error Resume Next
With OutMail
.to = para
.CC = copia
.BCC = ""
.Subject = " " & quince
.Body = "" & quince _
& "" & vbCrLf & "" & vbCrLf & _
"Saludos cordiales."
'.attachments.Add ActiveWorkbook.FullName 'aquí es donde adjunto el archivo, pero debo modificar, en vez de adjunto insertar dentro del correo, en el cuerpo la tabla.
.Display 'Abre el cuadro de dialogo de Outlook
End With
Set OutMail = Nothing
Set OutApp = Nothing
[/PHP]

Atento a sus comentarios, y desde ya muy agradecido.

Saludos cordiales desde Chile

P.S. Creo que no es necesario adjuntar archivo, solo asumamos que se debe insertar el rango A1:F5, o algo por el estilo

Share this post


Link to post
Share on other sites

Estimado, en google he buscado bastante y no encuentro la solución.

El tema

ActiveWorkbook.EnvelopeVisible
no me aplica y realmente no he encontrado lo que busco y por eso acudo al foro.

"Pero claro, es mas fácil que lo hagan otros." No sé qué pensar estimado, pues lo veo bastante personal.

En concreto lo que busco es que en un correo generado desde excel, se copie (el efecto que sería copiar de excel y pegar en el correo un rango de datos) dentro del cuerpo el rango.

Favor si mis preguntas son molestia haganmelo saber para no incomodar a nadie, pues realmente encuentro que este foro es magnifico.

Share this post


Link to post
Share on other sites

Hola:

Primera entrada de google a : enviar rango de celdas por e-mail

http://support.microsoft.com/kb/816644/es

[h=1]Cómo enviar un rango de celdas en un mensaje de correo electrónico utilizando Visual Basic para Aplicaciones en Excel[/h]

Sub Send_Range()


' Select the range of cells on the active worksheet.
ActiveSheet.Range("A1:B5").Select

' Show the envelope on the ActiveWorkbook.
ActiveWorkbook.EnvelopeVisible = True

' Set the optional introduction field thats adds
' some header text to the email body. It also sets
' the To and Subject lines. Finally the message
' is sent.
With ActiveSheet.MailEnvelope
.Introduction = "This is a sample worksheet."
.Item.To = "E-Mail_Address_Here"
.Item.Subject = "My subject"
.Item.Send
End With
End Sub


[/CODE]

Nada mas que añadir.

Saludos

Share this post


Link to post
Share on other sites

Uff, estimado Marco Antonio como le comenté antes, dicha macro la he analizado y para la funcionalidad de la aplicación en su conjunto no es lo que busco. Por decirlo de alguna forma es el "Plan b o c", pues luego de conformar dicho correo se deben desplegar más correos y modificar registros, los que una vez modificados, deben ser revisados antes de enviar los correos.

Por lo anterior insisto; dicha macro no es precisamente lo que busco o necesito. La idea es "copiar un rango e insertarlo como tabla dentro del cuerpo del correo". De pronto no es posible, lo desconozco.

La opción que me señala es precisamente la que utilizo hoy por hoy, pero del punto de vista de la automatización del proceso, no es lo ideal y precisamente por esto es que hago la consulta inicial.

"Seleccionar un rango de la planilla (pueden ser rangos de varias pestañas), e insertarlos en el display del correo, no que la pestaña de la planilla sea el correo"

Favor indicarme si soy lo suficientemente claro y primeramente si es posible hacer esto.

Mis saludos cordiales y estoy muy agradecido por su tiempo e interés en el tema.

Share this post


Link to post
Share on other sites

Si los rangos a enviar son de la misma hoja, no hay problema con:

Sub Send_Range()

Range("A10:A20,C5:C25").Select 'Enviar 2 rangos
With ActiveSheet.MailEnvelope
.Introduction = "Introducción"
.Item.To = "[email protected]"
.Item.Subject = "Asunto"
.Item.Send
End With

End Sub


[/CODE]

Si los rangos son de hojas distintas, lo mejor es crear una hoja de trabajo, copiar todos los rangos, y actuar como en el caso anterior.

Share this post


Link to post
Share on other sites

Estimado, muchas gracias.

De la manera que me indicas es como estoy tratando, pero envía toda la hoja, es particular son tablas vinculadas a SQL.

De la otra forma como indicaba no hay manera? "Seleccionar un rango de la planilla (pueden ser rangos de varias pestañas), e insertarlos en el display del correo, no que la pestaña de la planilla sea el correo"

La única diferencia en mi código es que reemplazo en:

.Item.Send

'por

.Item.display

pues se deben hacer algunas validaciones.

Creo que voy a tener que crear n auxiliares como correos y luego validarlos desde Excel.

Muchas gracias por su tiempo y dedicación.

P.S.

Una cosa que me complica con este método es que luego de ejecutar la macro con despliegue y no con envío automático, es que quedo con n (tantas hojas o pestañas) pestañas habiertas como correos se deben mandar y luego deben ser cerrados a mano, o bien crear otra macro para cerrarlo.


Sub Sending()
Application.ScreenUpdating = False
Application.DisplayAlerts = False

' Select the range of cells on the active worksheet.
ActiveSheet.Range("A1:A20").Select
Selection.Copy
Application.Sheets.Add
ActiveSheet.Name = "disp"
Range("a1").Select
ActiveSheet.Paste
Hoja1.Activate
ActiveSheet.Range("C5:C25").Select
Sheets("disp").Select
Range("c5").Select
ActiveSheet.Paste
Application.CutCopyMode = False

Range("A1:A20,C5:C20").Select

ActiveWorkbook.EnvelopeVisible = True

With ActiveSheet.MailEnvelope
.Introduction = "Prueba"
.Item.To = "correos"
.Item.Subject = "Borrar"
.Item.display
End With
Sheets("disp").Select
' si la cierro, se muestra la pestaña siguiente evidentemente
ActiveWindow.SelectedSheets.Delete

Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
[/PHP]

Nada que hacer con esto?

Mis saludos nuevamente

Share this post


Link to post
Share on other sites

Visorak, precisión y exactitud!!! Es JUSTO lo que buscaba, te estoy enormemente agradecido y espero sea de ayuda a alguien más. Voy a estudiar el tema para aprender, pues veo mucho código nuevo para mí.

Nuevamente las gracias, y un saludo cordial desde Chile.

Tema solucionado

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  



×
×
  • Create New...

Important Information

Privacy Policy


CTA Templates.png