Convertir rango variable a PDF y enviar por outlook

Tengo una hoja con datos desde A3 hasta J variable, donde he logrado que la columna "A" me genere 1 (unos) en cada fila con datos. Cuando digo "J variable" me refiero a que las filas se van completando automáticamente a medida que trae datos de otra hoja siendo J la última columna. Lo que necesito ahora es que una macro seleccione el rango que tenga al momento en que quiero enviar la hoja (o sea, desde A1 hasta J"x", convierta ese rango de datos a PDF y lo envíe por outlook a una dirección de correo que yo pueda escribir al momento de hacer el envío. ¿Será posible que alguien me ayude? Si no se entendió bien lo puedo explicar mejor. Hace varios días que estoy dando vueltas y no logro lo que quiero. Solo logro adjuntar la hoja completa, pero como contiene fórmulas hasta la fila 2298 me selecciona toda la hoja hasta esa fila inclusive lo que me genera un archivo adjunto de 3 Mb cosa que no quiero.

1 respuesta

Respuesta
2

H   o   l  a:

Te anexo la macro para enviar un rango. Realiza los siguientes cambios en la macro:

- En la siguiente línea de la macro, cambia la "A" por la columna que debe revisarse, te explico, la macro va a revisar desde la celda A3 hacia abajo hasta encontrar una celda vacía, cuando encuentre la celda vacía entonces significa que la fila anterior será la última fila con datos.

Si la columna "A" una celdas tienen datos, otras tienen vacíos y otras tienen datos, entonces debes poner la columna que siempre tiene datos desde A3 y hasta la fila variable.

For i = 3 To Range("A" & Rows.Count).End(xlUp).Row

- Cambia en la siguiente línea "Libro.pdf" por el nombre que desees poner al archivo pdf

arch = "Libro.pdf"

- En las siguientes líneas pon el asunto y cuerpo del correo

    dam.Subject = "Rango de celdas"     'asunto
    dam.Body = "Saludos"                '"Cuerpo del mensaje"

Sub Enviar_Correo()
'---
'   Por.Dante Amor
'---
    'encuentra la última fila con datos de la columna A
    For i = 3 To Range("A" & Rows.Count).End(xlUp).Row
        If Cells(i, "A") = "" Then
            i = i - 1
            Exit For
        End If
    Next
    '
    ruta = ThisWorkbook.Path & "\"
    arch = "Libro.pdf"
    Range("A3:J" & i).ExportAsFixedFormat Type:=xlTypePDF, _
        Filename:=ruta & arch, _
        Quality:=xlQualityStandard, IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, OpenAfterPublish:=False
    '
    correo = InputBox("Escribe la dirección de correo: ", "CORREO")
    If correo = "" Then Exit Sub
    '
    Set dam = CreateObject("Outlook.Application").CreateItem(0)
    dam.To = correo                     'Destinatarios
    dam.Subject = "Rango de celdas"     'asunto
    dam.Body = "Saludos"                '"Cuerpo del mensaje"
    dam.Attachments.Add ruta & arch
    Dam. Send 'El correo se envía en automático
 'dam. Display 'El correo se muestra
    MsgBox "Correo enviado", vbInformation, "CORREO"
End Sub

.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

¡Gracias es poco! EXCELENTE digo yo.

Muy bueno Dante. Gracias a tu ayuda pude terminar lo que me estaba enloqueciendo desde hace varios días. Un gran abrazo!!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas