Hacer una hoja de impresión de un libro

Hola experto! Tengo un libro de excel que tiene muchas hojas más de 100, de las cuales tengo siempre un rango lleno porque te explico se va cargando en ella por fila y como se carga se borran lineas así que no se a ciencia cierta cuantas filas están usadas a menos que entre en cada hoja. Algunas pueden estar vacías porque no hay información. El problema es que al querer imprimir si imprimo el libro me salen hojas con 3 lineas nada más o hojas en blanco de las que no tienen información y quisiera una forma de tener en una sola hoja toda la información para nada más imprimir sin tener que hacer un copy paste de todo el libro hoja por hoja.
¿Qué me sugieren que haga?, lo otro ¿hay una forma de que me haga los bordes solo hasta donde se llene la hoja sin tener que hacerlos cada vez que cargue una linea? Si alguien quiere me da su correo y le envío el libro para que me ayude por eso no hay problema. De antemano gracias

1 respuesta

Respuesta
1
La idea de esta página es que tu trates de hacer lo que necesitas, pero claro con la ayuda que yo te pueda brindar
1) Lo de copiar las hojas solo lo que esta vacío lo puedes hacer con la función Do
Y para que pase de hoja en hoja lo puedes hacer con la función for aprovechando el index de cada hoja
2) Sobre los bordes al final lo puedes hacer con el formato condiconal, imagino que habrá alguna palabra clave, como total o algo así que defina el final, si no la condición podría ser la linea en blanco
Avisame como te va
Hola! Gracias por tu respuesta, lo de formato condicional lo se hacer y es muy buena idea, no se me había ocurrido pero lo de los macros si es verdad que no se mucho, si puedes hacer el texto y que solo lo copie te lo agradecería mucho. Disculpa el abuso y gracias
Estos códigos hacen lo que necesitas, pero primero debes tener la siguiente información:
1) Una hoja llamada Indice con todos los nombres de las hojas, ya que como no se si se pueden manejar con index es mejor tener esa información
2) Una hoja llamada IMPRIME para que almacene la información de todas las hojas, esta hoja debe tener el menbrete o el titulo ya que no sería lógico copiarlo de cada hoja.
La macro sería la siguiente:
Sub Imprime1()
Dim Comprobar, Contador
Comprobar = True: a = 1 ' Inicializa variables.
Do ' Bucle externo.
Do While a < 65000 ' Bucle interno.
Sheets("INDICE").Select
a = a + 1 ' Incrementa el contador.
If Range("A" & a).Value <> "" Then ' Si la condición es verdadera.
HOJA = Range("A" & a).Value
Sheets(HOJA).Select
k = Range("A" & Cells.Rows.Count).End(xlUp).Row
Rows("2:" & k).Select
Selection.Copy
Sheets("IMPRIME").Select
k = Range("A" & Cells.Rows.Count).End(xlUp).Row + 1
Range("A" & k).Select
ActiveSheet.Paste
Sheets(HOJA).Select
Application.CutCopyMode = False
Else
Comprobar = False ' Establece el valor a False.
Exit Do ' Sale del bucle interno.
End If
Loop
Loop Until Comprobar = False ' Sale inmediatamente del bucle
End Sub
Si ya tienes configurado el formato condicional puedes mandar a la macro a que te imprima de una vez, pero si es lo que necesitas...
Chamo eres excelente con esto! Quedo perfecto pero tengo 2 problemitas, con lo de los bordes no se puede tendría que acero linea por linea no tengo totales solo una hoja resumen donde me dice cuantas lineas (filas) hay en cada pestañita, no se si podría trabajar con ese dato. Y con el macro me da todo pero las hojas que están vacías me hala los encabezados ya que las hojas vacías los tienen igualmente solo que están vacías ¿cómo hago para que verifique a partir de la fila A5 si esta llena tome todo y sino no tome nada? Gracias y disculpa tanta preguntadera!
Si en el formato condicional colocas por ejemplo $A$1 tienes que ir linea por linea pero si colocas $A1 la condición te considera que de ahí para abajo debe cambiar el numero de fila y no tienes que hacer fila por fila
Sobre los segundo hay te paso el código con el cambio que necesitas
Sub Imprime1()
Dim Comprobar, Contador
Comprobar = True: a = 1 ' Inicializa variables.
Do ' Bucle externo.
Do While a < 65000 ' Bucle interno.
Sheets("INDICE").Select
a = a + 1 ' Incrementa el contador.
If Range("A" & a).Value <> "" Then ' Si la condición es verdadera.
HOJA = Range("A" & a).Value
Sheets(HOJA).Select
If Range("A5").Value = "" Then
GoTo kike
k = Range("A" & Cells.Rows.Count).End(xlUp).Row
Rows("2:" & k).Select
Selection.Copy
Sheets("IMPRIME").Select
ActiveSheet.Paste
Sheets(HOJA).Select
Application.CutCopyMode = False
Else
Comprobar = False ' Establece el valor a False.
Exit Do ' Sale del bucle interno.
kike:
End If
Loop
Loop Until Comprobar = False ' Sale inmediatamente del bucle
End Sub
Hola! La copie tal cual pero hay un error en la fórmula la copie tal cual y me dice error de compilación Loop sin Do por favor verificala a ver que falto
Ok mi error, prueba
Sub Imprime1()
Dim Comprobar, Contador
Comprobar = True: a = 1 ' Inicializa variables.
Do ' Bucle externo.
Do While a < 65000 ' Bucle interno.
Sheets("INDICE").Select
a = a + 1 ' Incrementa el contador.
If Range("A" & a).Value <> "" Then ' Si la condición es verdadera.
HOJA = Range("A" & a).Value
Sheets(HOJA).Select
If Range("A5").Value = "" Then
GoTo kike
k = Range("A" & Cells.Rows.Count).End(xlUp).Row
Rows("2:" & k).Select
Selection.Copy
Sheets("IMPRIME").Select
k = Range("A" & Cells.Rows.Count).End(xlUp).Row + 1
Range("A" & k).Select
ActiveSheet.Paste
Sheets(HOJA).Select
Application.CutCopyMode = False
Else
Comprobar = False ' Establece el valor a False.
Exit Do ' Sale del bucle interno.
kike:
End If
End If
Loop
Loop Until Comprobar = False ' Sale inmediatamente del bucle
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas