Saltar al contenido

Macro que envíe a outlook un pdf con rangos definidos


Recommended Posts

publicado

Hola. Necesito gran ayuda.

Cópmo hacer una macro que se accione con doble click en una celda generando un envío de correo de outlook, con el campo para, asunto, y texto ya diligenciados, y con un pdf temporal adjunto que desaparece cuando se envía, y que tiene como rango fijo los rótulos de columna y un rango variable (que es el que voy a cambiar dependiendo de a quien se envia el correo)

He visto macros que hacen esto, mas no sé como juntarlas en una sola macro. Agradezco cualquier acercamiento a la función. Gracias.

publicado

Hola.

Gracias Antonio.

He podido configurar ya una macro tomando un poquito de todo.

Hasta ahora, he logrado que al yo clickear en un icono,ejecute un cuadro de dialogo para guardr un pdf, y que al guardarlo se ejecute M. Outlook con ése pdf adjunto, el cuál tiene un rango establecido.

El problema es que ése pdf me sale, la fila de los rótulos de columna (ejemplo, A1:V1) en una hoja, y la fila de base de datos (ejemplo, A5:V5) en la otra hoja. Y deseo que salgan, si no son pegados, continuos, que estén en la misma hoja para comodidad del usuario.

Espero me haya explicado bien y agradezco cualquier ayuda.

publicado

Hola Antonio.

Ya están adjuntos el excel con macros, y el pdf ejemplo generado por la macro, donde se ve el problema de que me salga en dos hojas cada una de las celdas.

He estado pensando en la posibilidad de añadir una macro para copiar las dos filas que necesito en una hoja aparte y desde ahi ejecutar la macro del pdf y del outlook para solucionar el problema de la hoja. Bueno, gracias por su disposición.

Eval de proveedores.xls

PDF ensayo.pdf

publicado

Prueba añadiendo estas líneas de código antes de crear el archivo .PDF


Application.PrintCommunication = False
With ActiveSheet.PageSetup
.PrintArea = Empty
.Orientation = xlLandscape
.FitToPagesWide = 1
.FitToPagesTall = 0
End With
Application.PrintCommunication = True
[/CODE]

publicado

Hola Antonio.

Agrgo el código y me salta un mensaje, "error 429 en tiempo de ejecución". El componente ActiveX no puede crear el objeto.

Lo pegue en el módulo 3 de ésta forma:

'The code below are used by the macros in the other two modules

'Do not change the code in the functions in this module

Function RDB_Create_PDF(Myvar As Object, FixedFilePathName As String, _

OverwriteIfFileExist As Boolean, OpenPDFAfterPublish As Boolean) As String

Dim FileFormatstr As String

Dim Fname As Variant

'Test If the Microsoft Add-in is installed

If Dir(Environ("commonprogramfiles") & "\Microsoft Shared\OFFICE" _

& Format(Val(Application.Version), "00") & "\EXP_PDF.DLL") <> "" Then

If FixedFilePathName = "" Then

'Open the GetSaveAsFilename dialog to enter a file name for the pdf

FileFormatstr = "PDF Files (*.pdf), *.pdf"

Fname = Application.GetSaveAsFilename("", filefilter:=FileFormatstr, _

Title:="Create PDF")

'If you cancel this dialog Exit the function

If Fname = False Then Exit Function

Else

Fname = FixedFilePathName

End If

'If OverwriteIfFileExist = False we test if the PDF

'already exist in the folder and Exit the function if that is True

If OverwriteIfFileExist = False Then

If Dir(Fname) <> "" Then Exit Function

End If

Application.PrintCommunication = False

With ActiveSheet.PageSetup

.PrintArea = Empty

.Orientation = xlLandscape

.FitToPagesWide = 1

.FitToPagesTall = 0

End With

Application.PrintCommunication = True

'Now the file name is correct we Publish to PDF

On Error Resume Next

Myvar.ExportAsFixedFormat _

Type:=xlTypePDF, _

FileName:=Fname, _

Quality:=xlQualityStandard, _

IncludeDocProperties:=True, _

IgnorePrintAreas:=False, _

OpenAfterPublish:=OpenPDFAfterPublish

On Error GoTo 0

'If Publish is Ok the function will return the file name

If Dir(Fname) <> "" Then RDB_Create_PDF = Fname

End If

End Function

publicado

No se que decirte, a mi me funciona perfectamente.

Lo único que hace este código es configurar la orientación de la impresión en horizontal y todas las columnas en una página.

Intenta hacer lo mismo con la grabadora de macros, que es lo que yo he hecho, a ver si te genera el mismo código que a mi.

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.