Convertir automáticamente a PDF varias hojas de un libro de excel y enviar cada hoja a una dirección de email distinta?

Fui designado tesorero del condominio de una pequeña comunidad, para llevar el control de gastos y pagos prepare un archivo de excel sencillo donde hay una hoja de estado de cuenta para cada parcela, la idea es a final de cada mes enviar por correo electrónico a cada propietario su estado de cuenta en formato PDF por lo que necesitaría un macro que convierta las hojas a PDF y las envíe cada una a la dirección correspondiente.

¿Es esto posible? Soy un usuario intermedio de excel, no tengo experiencia con macros.

Respuesta

Para convertir en PDF una hoja de excel el código es el siguiente:

' Guarda_PDF Macro'
    'ActiveSheet es para la hoja activa, cambias por ActiveWorkbook para todas las hojas
    ruta = ThisWorkbook.Path
   ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    ruta & "\Nombredelarchivo.pdf"_
    , Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
    :=False, OpenAfterPublish:=False

Habría que ver donde tienes el mail de la persona que quieres enviar el mail, pero podría ser algo así:

Set objOutlook = CreateObject("Outlook.Application")
    Set objNamespace = objOutlook.GetNamespace("MAPI")
    Set objItem = objOutlook.CreateItem(olMailItem)
    objNamespace.Logon "EXCELSPACE", , True, True
Dim LaRuta As String
nombre1 = Nombredelarchivo.pdf
LaRuta = ActiveWorkbook.Path
ADJUNTO = LaRuta & "\" & nombre1
    With objItem
      .Attachments.Add (ADJUNTO)
      .Display
      .To = range("aa1")
      .CC = ""
      .BCC = ""
      .Subject = "Asunto."
      .Body = "Buenos dias, adjunto recibo. "
 End With
    objNamespace.Logoff
    Set objOutlook = Nothing
    Set objItem = Nothing
    Set objNamespace = Nothing

En el primer código genera el PDF y en el segundo lo envía por mail a la casilla que esta registrada en la celda "AA1".

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas