Macro para Imprimir hojas ocultas

Los Expertos de Excel.

Solicito un gran favor de ayudarme, tengo un trabajo de un libro que tiene 12 hojas,

Así h1 es la matriz, h2 es el desarrollo, y las otras diez son un grupo de resultados y están ocultas, quisiera que cuando se coloca datos en la h1 la celda c1 se guarde en PDF la h2 y que al colocar un dato el la h2 celda b1, se guarde en PDF la h2 y la hoja 1 del grupo de 10 que están ocultas, y si sigo colocando datos en h2 celda b2 se guarde la h2 y las hojas 1 y 2 en un PDF con las 3 paginas, si coloco datos en h2 celda b3 se guarde un PDF con la h2 con las hojas 1, 2, 3 de la cuales la 2 y 3 están ocultas... Así hasta la b10 que se guarda un PDF con las 11 hojas, la h2 y las 10 ocultas.

2 respuestas

Respuesta
1

Dante Amor

Se llana la matriz y solo cuando le de imprimir se cumpla con los requerido de la matriz y desarrollo.

Respuesta
1

Me perdí un poco en tu descripción.

1. En cuál hoja vas a poner datos, ¿en la h1?

2. ¿En cuáles celdas vas a poner datos?

Podrías hacer una especie de lista, por ejemplo

Hoja: h1

Celda                           Hojas al PDF

b1                                h2

b2                                h2, h3

b3                                h2, h3, h4

3. ¿Puedes decirme los nombres de las 12 hojas? O cada hoja está en la posición, es decir, la h1 es la primera hoja, la h2 la segunda, ¿h3 la tercera y así hasta la 12?

4. Cuando dices: "quisiera que cuando se coloca datos en la h1 la celda c1 ", ¿te refieres a que cuando modificas dicha celda en automático la macro se ejecute?

Hola Dante Amor, primero que todo muchas gracias por tu tiempo y tu oportuna respuesta, la pregunta es así

h1 = hoja 1 llamada matriz

h2 = hoja 2 llamada desarrollo

Grupo de 10 hojas ocultas llamadas así

reply1, reply2, reply3... hasta la 10.

entonces la matriz lleno datos, y tiene una celda la d1, que cundo le agrego datos, me guarda un PDF de la h2 = desarrollo.

ahora la h2 =desarrollo tiene a su vez otra celda c1, que cuando le agrego datos me guarda la h2 y la reply1 que esta oculta en un PDF de dos paginas la h2 y la reply1,

sigo en la h2 = desarrollo y le coloco datos en la celda c2, y me guarda un PDF con la h2 =desarrollo y las dos hojas siguientes que están ocultas, la reply1 y la reply2, espero ser claro pa que me puedas ayudar.

Hola Dante Amor

cuando se llena de datos la matriz y solo cuando le de imprimir se cumpla con los requerido de la matriz y  desarrollo.

Y si tienes datos en todas las celdas desde la C1 hasta la C2, ¿entonces qué te genere 10 archivos?

¿Quieres qué cuando le des imprimir te genere los pdf y además que imprima o solamente que genere los pdf?

¿Y qué nombre le voy a poner a cada archivo que se genere?

Perdona la pregunta es así:

Y si tienes datos en todas las celdas desde la C1 hasta la C10, ¿entonces qué te genere 10 archivos?

¿Y qué nombre le ponga a cada archivo?

Te anexo la macro, si tienes las 11 celdas con dato, te genera 11 archivos.

Celda                             nombre archivo

h1.d1                             desarrollo.pdf

h2.c1                             desarrollo 1.pdf

h2.c2                             desarrollo 2.pdf 

...

h2.c10                          desarrollo 10.pdf

Sub GuardarPdf()
'Por.Dante Amor
    Application.ScreenUpdating = False
    Set h1 = Sheets("matriz")
    Set h2 = Sheets("desarrollo")
    '
    ruta = ThisWorkbook.Path & "\"
    If h1.[d1] <> "" Then
        h2.ExportAsFixedFormat Type:=xlTypePDF, _
            Filename:=ruta & h2.Name & ".pdf", _
            Quality:=xlQualityStandard, IncludeDocProperties:=True, _
            IgnorePrintAreas:=False, OpenAfterPublish:=False
    End If
    '
    hojas = Array("", "reply1", "reply2", "reply3", "reply4", "reply5", _
                  "reply6", "reply7", "reply8", "reply9", "reply10")
    For i = 1 To UBound(hojas)
        hoja = hojas(i)
        Sheets(hoja).Visible = True
    Next
    '
    h2.Select
    For i = 1 To 10
        If h2.Cells(i, "C") <> "" Then
            For j = 1 To i
                hoja = "reply" & j
                Sheets(hoja).Select Replace:=False
            Next
            ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
                Filename:=ruta & h2.Name & " " & i & ".pdf", _
                Quality:=xlQualityStandard, IncludeDocProperties:=True, _
                IgnorePrintAreas:=False, OpenAfterPublish:=False
        End If
    Next
    For i = 1 To UBound(hojas)
        hoja = hojas(i)
        Sheets(hoja).Visible = False
    Next
    Application.ScreenUpdating = True
    MsgBox "Finalizado"
End Sub

Te recomiendo que pongas un botón y ejecutes la macro:

Sigue las Instrucciones para un botón y ejecutar la macro

  1. Abre tu libro de Excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. En el menú elige Insertar / Módulo
  4. En el panel del lado derecho copia la macro
  5. Ahora para crear un botón, puedes hacer lo siguiente:
  6. Inserta una imagen en tu libro, elige del menú Insertar / Imagen / Autoformas
  7. Elige una imagen y con el Mouse, dentro de tu hoja, presiona click y arrastra el Mouse para hacer grande la imagen.
  8. Una vez que insertaste la imagen en tu hoja, dale click derecho dentro de la imagen y selecciona: Tamaño y Propiedades. En la ventana que se abre selecciona la pestaña: Propiedades. Desmarca la opción “Imprimir Objeto”. Presiona “Cerrar”
  9. Vuelve a presionar click derecho dentro de la imagen y ahora selecciona: Asignar macro. Selecciona: GuardarPdf
  10. Aceptar.
  11. Para ejecutarla dale click a la imagen.

¡Gracias! De verdad nuevamente mil gracias, 5 horas acondicionándola pero lo logre, excelente.

adjunto imagen de lo logrado, excelente,  te pido una gran favor , y quisiera saber si desarrollo 10 ya tiene la info de las  otras nueves, y la nueve de la 8, hay posibilidad de que me guarde solo un PDF de que cuando desarrollo solicita c3 entonces un PDF de desarrollo y reply1, 2 y3. sin copiar desarrollo 2, ni desarrollo1.

cuando active c5 seria un PDF de desarrollo y las 5 reply. asi sucesivamente. de antemano mil gracias.

Si quieres la 5, deja vacías todas las celdas, escribe algo en la C5 y la macro solamente generará un PDF con: desarrollo, reply1, reply2, reply3, reply4 y reply5

¡Gracias! y mil gracias, se imagina yo hacia esto manual en la empresa, y eso que cuando llegue no había estándar de reply, adiós regaños por demorado, nuevamente muchas gracias. tema cerrado.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas