none
Imprimir el mismo formato con fechas consecutivas RRS feed

  • Pregunta

  • Hola a todos,

    Soy nuevo en el tema de los macros en Excel y me encuentro buscando una solución para imprimir un formato de lista de asistencia sin tener que cambiar manualmente el día y la fecha antes de enviar a imprimir. He encontrado algunas soluciones parciales pero no logro integrarlas en una solución para mi necesidad.

    Busco que en la primera impresión salga la fecha inicial que yo determine, en la segunda la fecha del día siguiente, y así sucesivamente hasta terminar un rango de 30 impresiones.

    Yo imprimo estas listas cada mes para 20 centros de trabajo y me gustaría saber como crear un macro que además me permita introducir la fecha inicial para poder imprimir todo un mes (30 días). Anexo una solución que me permitió estampar la fecha como encabezado:

      Sub PrintMonth()
        Dim s As String
        Dim d As Date
        s = InputBox(Prompt:="Please enter the start date")
        If Not IsDate(s) Then
          MsgBox "Incorrect date", vbExclamation
          Exit Sub
        End If
        For d = CDate(s) To DateAdd("m", 1, CDate(s)) - 1
          ActiveSheet.PageSetup.CenterHeader = d
          ActiveSheet.PrintOut
        Next d
       End Sub

    Este macro incluye una ventana para ingresar la fecha inicial. Sin embargo le faltan dos cosas. Una es que me ponga la fecha en la celda que quiero. También una secuencia para que igualmente se estampe el día de la semana correspondiente, en otra celda contigua.

    Adicionalmente quiero mencionar que los 20 centros de trabajo los tengo en el mismo libro, me pregunto si el macro que grabe en este libro me servirá para todas las hojas o tengo que crear uno para cada hoja.

    Agradezco de antemano su ayuda. Saludos desde Ciudad Juárez, Chihuahua. MEXICO.

    martes, 10 de enero de 2017 0:51

Todas las respuestas

  • copia esto en un modulo:

    Sub ejecutar()
        PrintMonth CDate("1 / 1 / 2017"), CDate("3 / 1 / 2017")
    End Sub

    Sub PrintMonth(IDate As Date, FDate As Date)
        Dim d As Date
        Dim H As Worksheet
        
        For Each H In Worksheets   ' bucle hojas
            For d = IDate To FDate   ' bucle fechas
              H.Cells(1, 1) = d  ' escribo la fecha en la celda 1,1
              H.PageSetup.CenterHeader = d
              H.PrintOut
            Next d
        Next
    End Sub

    jueves, 12 de enero de 2017 11:37