Saltar al contenido

Recommended Posts

publicado (editado)

Buenas tardes.

He hecho dos macros que imprimen dos pdf de diferentes páginas.

Primero hago el pdf:

Sub printdep()
Dim nombre As String, Ruta As String, nombre2 As String
Sheets("Horarios").Select
   Range("A1:Q42").Select
    ActiveSheet.PageSetup.PrintArea = "$A$1:$Q$42"
    Application.PrintCommunication = False
    With ActiveSheet.PageSetup
        .PrintTitleRows = ""
        .PrintTitleColumns = ""
    End With
    Application.PrintCommunication = True
    ActiveSheet.PageSetup.PrintArea = "$A$1:$Q$42"
    Application.PrintCommunication = False
    With ActiveSheet.PageSetup
        .LeftHeader = ""
        .CenterHeader = ""
        .RightHeader = ""
        .LeftFooter = ""
        .CenterFooter = ""
        .RightFooter = ""
        .LeftMargin = Application.InchesToPoints(1.7)
        .RightMargin = Application.InchesToPoints(0)
        .TopMargin = Application.InchesToPoints(0.2)
        .BottomMargin = Application.InchesToPoints(0.2)
        .HeaderMargin = Application.InchesToPoints(0.31496062992126)
        .FooterMargin = Application.InchesToPoints(0.31496062992126)
        .PrintHeadings = False
        .PrintGridlines = False
        .PrintComments = xlPrintNoComments
        .CenterHorizontally = False
        .CenterVertically = False
        .Orientation = xlLandscape
        .Draft = False
        .PaperSize = xlPaperA4
        .FirstPageNumber = xlAutomatic
        .Order = xlDownThenOver
        .BlackAndWhite = False
        .Zoom = False
        .FitToPagesWide = 1
        .FitToPagesTall = 1
        .PrintErrors = xlPrintErrorsDisplayed
        .OddAndEvenPagesHeaderFooter = False
        .DifferentFirstPageHeaderFooter = False
        .ScaleWithDocHeaderFooter = True
        .AlignMarginsHeaderFooter = True
        .EvenPage.LeftHeader.Text = ""
        .EvenPage.CenterHeader.Text = ""
        .EvenPage.RightHeader.Text = ""
        .EvenPage.LeftFooter.Text = ""
        .EvenPage.CenterFooter.Text = ""
        .EvenPage.RightFooter.Text = ""
        .FirstPage.LeftHeader.Text = ""
        .FirstPage.CenterHeader.Text = ""
        .FirstPage.RightHeader.Text = ""
        .FirstPage.LeftFooter.Text = ""
        .FirstPage.CenterFooter.Text = ""
        .FirstPage.RightFooter.Text = ""
    End With
    Application.PrintCommunication = True
    Application.PrintCommunication = False
    With ActiveSheet.PageSetup
        .PrintTitleRows = ""
        .PrintTitleColumns = ""
ThisWorkbook.ActiveSheet.PrintOut
 Application.PrintCommunication = True
     Sheets("HORARIOS").Select
     End With

Y lo envia:

 

Sub EnvioDatosVend()
Dim narch As String
Dim cliente As String
Dim mail As String
Dim Ruta As String
Dim libro As String
Dim ahora As String
Dim vend As String
Dim ArchivoPdf As String
Dim ImpresoraAct As String
Dim ProgCorreo As Object
Dim CorreoSaliente As Object
    With Application
        .ScreenUpdating = False
        .EnableEvents = False
        .DisplayAlerts = False
    End With    
    ImpresoraAct = Application.ActivePrinter
    Application.Dialogs(xlDialogPrinterSetup).Show
Sheets("Horarios").Select
    narch = Range("G54")
    cliente = Range("V3")
    mail = Range("C55")
    vend = Range("C54")
    Ruta = "C:\temp\"
    ahora = Application.WorksheetFunction.Text(Now(), "dd.mm.yy")
    libro = narch & " " & vend & " " & cliente & ".pdf"
    ArchivoPdf = Ruta & libro        
      Set ProgCorreo = CreateObject("Outlook.Application")
    Set CorreoSaliente = ProgCorreo.CreateItem(0)                
        With ActiveSheet
            .ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
            ArchivoPdf, Quality _
            :=xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=False _
            , OpenAfterPublish:=False
        End With
    On Error Resume Next    
    With CorreoSaliente
        .To = mail
        .CC = ""
        .BCC = ""
        .Subject = narch & " " & vend & " " & cliente
        .body = "Hola " & vend & Chr(13) & "Te mando el horario del mes." & Chr(13) & "Un saludo."
        .Attachments.Add ArchivoPdf
        .Send
    End With
    On Error GoTo 0    
    Set CorreoSaliente = Nothing
    Set ProgCorreo = Nothing    
    With Application
        .ScreenUpdating = True
        .EnableEvents = True
        .DisplayAlerts = True
    End With

 

El otro pdf funciona de forma similar, pero no consigo saber donde nombrar el archivo al crear los .pdf ni donde indicar en las macros de envío que es uno u otro el que quiero enviar.

Funcionar, milagrosamente, funcionan, pero siempre me envía el mismo PDF

Está claro que no tengo idea de cómo realizar macros, lo intento a base de ideas que encuentro y de prueba y error, pero se me está resistiendo.

¿Podéis ayudarme?

Gracias!

Editado el por Maku
publicado (editado)

Poco a poco voy prosperando (es este archivo o yo 🤪), he hecho un ejemplo con lo que creo que está mejor, pero no consigo hacer el envío del correo.

Adjunto archivo que tiene dos macros:

- Para imprimir la semana 1

- Para imprimir la semana 2

Necesito una macro que me lance esas otras dos macros y adjunte los pdf en un email.

Muchas gracias por la ayuda.

 

Para macro.xlsm

Editado el por Maku

Conéctate para comentar

Podrás dejar un comentario después de conectarte



Conéctate ahora
  • 109 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Archivos

  • Estadísticas de descargas

    • Archivos
      188
    • Comentarios
      98
    • Revisiones
      29

    Más información sobre "Cambios en el Control Horario"
    Última descarga
    Por pegones1

    3    1

  • Crear macros Excel

  • Mensajes

    • Prueba ahora  RCI PRUEBA2.xlsm
    • Saludos @JSDJSD espero estes bien agradecido como siempre por sus oportunas y acertadas respuestas Se solvento lo de la copia de datos del ListBox1 al TextBox3, sin embargo, ahora cuando se guardan los datos se activa el MsgBox "Datos Incompletos: Seleccione un Código", cosa que no sucedía en el archivo original: Private Sub ListBox1_Click(): On Error Resume Next 'Alertas del Sistema If ComboBox1 = "" Then ListBox1 = Enabled MsgBox "Datos Incompletos: Seleccione un Código", vbExclamation Exit Sub End If End sub Dicho MsgBox debe de activarse única y exclusivamente cuando se intente seleccionar un caso en el ListBox1 y el ComboBox1 = "" y no debería activarse cuando se guarde la información, solventando este único y último detalle se podría dar por cerrada esta consulta.
    • Saludos @JSDJSD espero estes bien gracias por la solución que propuso para mi pregunta.  Tome el archivo con sus correcciones y al descargarlo verifique no posee una funcionalidad que si estaba en el archivo original de mi pregunta en concreto tiene que ver con la información que debería mostrarse en el TextBox2  de allí que:  Cuando selecciono el código y hago click sobre en el Listbox1  los datos se copian correctamente en los TextBox3 y TextBox5 pero en el TextBox2 no se copia ningun dato revisando me pude percatar que con la macros que agrego no se muestran datos en el TextBox2 a partir de la Columna "G" y cuando se suspende el funcionamiento de la Macro ComboBox1 si se muestran correctamente todos los datos en los TextBox2, 3 y 5 pero en el Listbox1 no se muestran exclusivamente los datos correspondientes al código que se selecciona en el ComboBox1,  mientras que si se suspende el funcionamiento de la Macro BuscarYCargarEnListBox los datos se mostrados en el Listbox1 corresponden exclusivamente al código que se selecciona en el ComboBox1 dichos datos se copian correctamente en los TextBox3 y TextBox5 pero en el TextBox2 no se copia ningun dato
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • 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.