Excel - Macro para imprimir una cantidad de hojas en función del valor de varias celdas

 
Vista:
sin imagen de perfil

Macro para imprimir una cantidad de hojas en función del valor de varias celdas

Publicado por Jessica (19 intervenciones) el 12/11/2021 15:04:25
Buenos días,

He estado siguiendo varios mensajes de este foro, pero no he conseguido realizar una macro que seguro que es sencilla, pero para alguien que no ha hecho VBA se hace complicada.

Tengo creada una macro larguísima que creo que se puede resumir en 5 líneas y hacerla más sencilla, así como crear un botón que la ejecute.

La idea es hay una celda con una determinada cifra que es la que quisiera que se usara para imprimir, es decir:
si de la ref. 1 hay un 3, que se impriman 3 copias de la hoja 1. de la ref. 2 hay un 2, 2 copias de la hoja 2. Y así hasta 34 referencias, con el número de copias variable.

No me deja adjuntar el archivo. Si alguien se ofrece a ayudarme lo puedo enviar por email si es necesario...

Mil gracias de antemano y un saludo!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Andres Leonardo
Val: 3.136
Plata
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Macro para imprimir una cantidad de hojas en función del valor de varias celdas

Publicado por Andres Leonardo (1583 intervenciones) el 12/11/2021 16:13:56
Hola Jessica,

Si el archivo seria, y esi es solo concatenar un valor donde esta el numero de copias
En todo caso con gusto , si no puedes agregar el libro zipeado, postea el codigo.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Macro para imprimir una cantidad de hojas en función del valor de varias celdas

Publicado por Jessica (19 intervenciones) el 15/11/2021 11:39:04
Buenos días,

Quizás no me he explicado bien...

Tengo 35 hojas en el archivo. La primera es la hoja resumen en la que se calculan la cantidad de copias necesarias de cada una de las hojas.

La macro que estoy usando actualmente es

Sub A()

'preparar la hoja para la impresión
With Sheets("B150").PageSetup
.PrintArea = ""
.Orientation = xlPortrait
.PaperSize = xlPaperA4 'formato A4
.BlackAndWhite = False 'incluir colores o no
.FitToPagesWide = 1 'reduce el tamaño de la hoja (ancho)
.FitToPagesTall = 1 'reduce el tamaño de la hoja (alto)
.CenterHorizontally = False 'centrar horizontalmente
.CenterVertically = False 'centrar verticalmente
End With

' Num_Copias
If Sheets("PEDIDO").Range("E10") > 0 Then
ncopias = Range("e10").Value
Sheets("B150").PrintOut Copies:=ncopias
End If

End Sub

Sub B()

'preparar la hoja para la impresión
With Sheets("B300").PageSetup
.PrintArea = ""
.Orientation = xlPortrait
.PaperSize = xlPaperA4 'formato A4
.BlackAndWhite = False 'incluir colores o no
.FitToPagesWide = 1 'reduce el tamaño de la hoja (ancho)
.FitToPagesTall = 1 'reduce el tamaño de la hoja (alto)
.CenterHorizontally = False 'centrar horizontalmente
.CenterVertically = False 'centrar verticalmente
End With

' Num_Copias
If Sheets("PEDIDO").Range("E11") > 0 Then
ncopias = Range("e11").Value
Sheets("B300").PrintOut Copies:=ncopias
End If

End Sub



Sub D()

'preparar la hoja para la impresión
With Sheets("B450").PageSetup
.PrintArea = ""
.Orientation = xlPortrait
.PaperSize = xlPaperA4 'formato A4
.BlackAndWhite = False 'incluir colores o no
.FitToPagesWide = 1 'reduce el tamaño de la hoja (ancho)
.FitToPagesTall = 1 'reduce el tamaño de la hoja (alto)
.CenterHorizontally = False 'centrar horizontalmente
.CenterVertically = False 'centrar verticalmente
End With

' Num_Copias
If Sheets("PEDIDO").Range("E13") > 0 Then
ncopias = Range("e13").Value
Sheets("B450").PrintOut Copies:=ncopias
End If

End Sub

(........)

Y así hasta 34 macros por cada una de las hojas y referencias. Entiendo que esto se puede resumir y, lo que más me interesaría, sería que con un sólo botón se imprimiera sólo la hoja que tenga valor superior a cero con la cantidad que sea necesaria.

Lo he intentado grabando una macro y dándole a todas las macros para que se activen de golpe, pero me da un error, no sé si porque se satura...

Pedido

Muchas gracias!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Macro para imprimir una cantidad de hojas en función del valor de varias celdas

Publicado por Antoni Masana (2477 intervenciones) el 15/11/2021 15:39:07
Si entiendo bien el problema que tienes, con una sola macro imprimes solucionas todos los problemas.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Sub Impresion()
    Dim Tabla(34,2) as string, A as byte
 
    Tabla(1,1) = "B150" : Tabla(1,2) = "E10"
    Tabla(2,1) = "B300" : Tabla(2,2) = "E11"
    Tabla(3,1) = "B450" : Tabla(3,2) = "E13"
    ...
 
    For A=1 to  30
        'preparar la hoja para la impresión
        With Sheets(Tabla(a,1)).PageSetup
            .PrintArea = ""
            .Orientation = xlPortrait
            .PaperSize = xlPaperA4 'formato A4
            .BlackAndWhite = False 'incluir colores o no
            .FitToPagesWide = 1 'reduce el tamaño de la hoja (ancho)
            .FitToPagesTall = 1 'reduce el tamaño de la hoja (alto)
            .CenterHorizontally = False 'centrar horizontalmente
            .CenterVertically = False 'centrar verticalmente
        End With
 
        ' Num_Copias
        If Sheets("PEDIDO").Range(Tabla(a,2)) > 0 Then
            Sheets(Tabla(a,1)).PrintOut Copies:=Range(Tabla(a,2)).Value
        End If
    Next
End Sub

Y si el nombre de la hoja se puede sacar de la hoja pedidos no haría falta ni la tabla.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Macro para imprimir una cantidad de hojas en función del valor de varias celdas

Publicado por Jessica (19 intervenciones) el 16/11/2021 14:53:52
Muchas gracias!!

He introducido el código indicado y me ha pasado lo mismo que cuando intentaba ejecutar todas las macros, una detrás de la otra. Es como si se bloqueara y hay que detener el depurador. La línea que aparece en amarillo es

With Sheets(Tabla(a,1)).PageSetup

Cuál puede ser el problema????
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Macro para imprimir una cantidad de hojas en función del valor de varias celdas

Publicado por Antoni Masana (2477 intervenciones) el 16/11/2021 15:18:17
No lo se.
Tendria que probar la macro para ver que es lo que pasa.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Macro para imprimir una cantidad de hojas en función del valor de varias celdas

Publicado por Jessica (19 intervenciones) el 17/11/2021 09:27:39
Comprimiendo el archivo me ha dejado adjuntarlo.

Verá que hay muchas macros que son las que había adjuntado anteriormente, y una más que es donde se reproducían todas de golpe.

La última que hay es su propuesta, pero me da el mismo error... de momento lo único que me funciona es darle a cada uno de los botones para imprimir las celdas que tienen contenido...

Muchas gracias!!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Macro para imprimir una cantidad de hojas en función del valor de varias celdas

Publicado por Antoni Masana (2477 intervenciones) el 17/11/2021 15:29:50
He detectado un problema y es que si el numero de la celda no es 1 o mayor da error.

Otro detalle, pongamos como ejemplo el B - 1000, la fórmula de la columna E es =D17/10, si en la columna D se pone un numero menor de 10, por ejemplo 6, la celda E17 muestra 1 pero en realidad lo que hay es un 0,6 y a la hora de imprimir da error, en cambio si hay un 16, muestra un 2 y a la hora de imprimir imprime 1 hoja y no 2 como se espera.

Si quieres que con valores de 1 al 10 de ponga 1 caja e imprima 1 hoja, si quieres que con valores de 11 al 19 de ponga 2 cajas e imprima 2 hoja, etc. Has de poner esta formula

1
=REDONDEAR.MAS(D17/10;0)

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Macro para imprimir una cantidad de hojas en función del valor de varias celdas

Publicado por Jessica (19 intervenciones) el 18/11/2021 09:15:17
Muchas gracias por el consejo! He modificado todas las fórmulas para que siempre sea un número entero. No obstante, el resultado siempre es un número entero... pero eso es una cuestión interna...

Después de modificarlo, sigue dando el mismo error. Adjunto pantallazo de lo que sucede, por si se ocurre otra cosa...

Mil gracias!!
Error
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Macro para imprimir una cantidad de hojas en función del valor de varias celdas

Publicado por Antoni Masana (2477 intervenciones) el 18/11/2021 09:48:54
Sube el libro que te ha dado el error con los datos que has introducido.
El error es claro, hay un valor demasiado pequeño, menor de 1 o demasiado grande, mayor de 32762, pero sin ver los datos introducidos no puedo saber cual es el problema.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Macro para imprimir una cantidad de hojas en función del valor de varias celdas

Publicado por Jessica (19 intervenciones) el 18/11/2021 12:01:17
A ver si hay suerte!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Macro para imprimir una cantidad de hojas en función del valor de varias celdas

Publicado por Antoni Masana (2477 intervenciones) el 18/11/2021 12:14:29
La macro con los cambios para quitar el error, y para que sea más rapida.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
Sub Impresion()
    Dim Tabla(34, 2) As String, A As Byte
 
    Tabla(1, 1) = "B150": Tabla(1, 2) = "E10"
    Tabla(2, 1) = "B300": Tabla(2, 2) = "E11"
    Tabla(3, 1) = "B400": Tabla(3, 2) = "E12"
    Tabla(4, 1) = "B450": Tabla(4, 2) = "E13"
    Tabla(5, 1) = "B500": Tabla(5, 2) = "E14"
    Tabla(6, 1) = "B600": Tabla(6, 2) = "E15"
    Tabla(7, 1) = "B800": Tabla(7, 2) = "E16"
    Tabla(8, 1) = "B1000": Tabla(8, 2) = "E17"
    Tabla(9, 1) = "BF600": Tabla(9, 2) = "E22"
    Tabla(10, 1) = "BF800": Tabla(10, 2) = "E23"
    Tabla(11, 1) = "BF900": Tabla(11, 2) = "E24"
    Tabla(12, 1) = "BRL": Tabla(12, 2) = "E29"
    Tabla(13, 1) = "A7030": Tabla(13, 2) = "M10"
    Tabla(14, 1) = "A7040": Tabla(14, 2) = "M11"
    Tabla(15, 1) = "A7045": Tabla(15, 2) = "M12"
    Tabla(16, 1) = "A7050": Tabla(16, 2) = "M13"
    Tabla(17, 1) = "A7060": Tabla(17, 2) = "M14"
    Tabla(18, 1) = "A7080": Tabla(18, 2) = "M15"
    Tabla(19, 1) = "A9030": Tabla(19, 2) = "Q10"
    Tabla(20, 1) = "A9040": Tabla(20, 2) = "Q11"
    Tabla(21, 1) = "A9045": Tabla(21, 2) = "Q12"
    Tabla(22, 1) = "A9050": Tabla(22, 2) = "Q13"
    Tabla(23, 1) = "A9060": Tabla(23, 2) = "Q14"
    Tabla(24, 1) = "A9080": Tabla(24, 2) = "Q15"
    Tabla(25, 1) = "ARL700": Tabla(25, 2) = "M19"
    Tabla(26, 1) = "ARL900": Tabla(26, 2) = "Q19"
    Tabla(27, 1) = "TR4590": Tabla(27, 2) = "P23"
    Tabla(28, 1) = "ASC350": Tabla(28, 2) = "P27"
    Tabla(29, 1) = "ASC450": Tabla(29, 2) = "P28"
    Tabla(30, 1) = "ASC560": Tabla(30, 2) = "P29"
    Tabla(31, 1) = "C2040": Tabla(31, 2) = "E34"
    Tabla(32, 1) = "C2060": Tabla(32, 2) = "E35"
    Tabla(33, 1) = "C2240": Tabla(33, 2) = "I34"
    Tabla(34, 1) = "C2260": Tabla(34, 2) = "I35"
 
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    Application.EnableEvents = False
    ActiveSheet.DisplayPageBreaks = False
 
    For A = 1 To 34
        'preparar la hoja para la impresión
        With Sheets(Tabla(A, 1)).PageSetup
            .PrintArea = ""
            .Orientation = xlPortrait
            .PaperSize = xlPaperA4 'formato A4
            .BlackAndWhite = False 'incluir colores o no
            .FitToPagesWide = 1 'reduce el tamaño de la hoja (ancho)
            .FitToPagesTall = 1 'reduce el tamaño de la hoja (alto)
            .CenterHorizontally = False 'centrar horizontalmente
            .CenterVertically = False 'centrar verticalmente
        End With
 
        ' Num_Copias
        If Sheets("PEDIDO").Range(Tabla(A, 2)) > 0 Then
            Sheets(Tabla(A, 1)).PrintOut Copies:=Sheets("PEDIDO").Range(Tabla(A, 2)).Value
        End If
    Next
    Sheets("PEDIDO").Select
 
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic
    Application.EnableEvents = True
    ActiveSheet.DisplayPageBreaks = True
    Application.CutCopyMode = False
End Sub


Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Macro para imprimir una cantidad de hojas en función del valor de varias celdas

Publicado por Jessica (19 intervenciones) el 18/11/2021 12:30:20
Muchísimas gracias!!

Creo que sigue siendo una macro pesada por la cantidad de imágenes que tiene, pero ahora sí ha impreso lo que le he solicitado, así que todo perfecto!! Al final las otras mini macros que tenía no sirven para nada!!

Mil gracias!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de David

Macro para imprimir una cantidad de hojas en función del valor de varias celdas

Publicado por David (2 intervenciones) el 03/08/2022 21:18:33
Hola Antoni, estuve revisando tus ejemplos para saber como adecuarlos a mi necesidad pero me perdí un poco, tal vez me puedas ayudar con esto: Necesito imprimir un paquete de formatos varios (para reportar avances de un proyecto), y cada formato es de 1 página ha de imprimirse en una cantidad x (que puede variar o incluso ser 0 dependiendo de la etapa del proyecto). Lo planeo hacer desde un índice donde ingrese dichas cantidades y mande a imprimir el paquete de reportes. Adjunto imagen. De antemano gracias

Captura-de-pantalla-2022-08-03-141241
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Macro para imprimir una cantidad de hojas en función del valor de varias celdas

Publicado por Antoni Masana (2477 intervenciones) el 12/11/2021 17:28:52
Esto imprime el numero de copias que ponga en la celda A1 de la hoja activa

1
2
3
4
5
6
Sub Macro1()
    ActiveWindow.SelectedSheets.PrintOut _
                                Copies:=Range("A1"), _
                                Collate:=True, _
                                IgnorePrintAreas:=False
End Sub

En este ejemplo imprime la desde la hoja 2 hasta la hoja 3 y hace 5 copias

1
2
3
4
5
6
7
8
Sub Macro2()
    ActiveWindow.SelectedSheets.PrintOut _
                                From:=2, _
                                To:=3, _
                                Copies:=5, _
                                Collate:=True, _
                                IgnorePrintAreas:=False
End Sub

Para más información utiliza el GRABAR MACRO y la opción de imprimir (Así he sacado estos ejemplos)

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar