Excel - Macros Para Imprimir varias hojas segun el valor de una celda

 
Vista:
sin imagen de perfil
Val: 12
Ha aumentado 1 puesto en Excel (en relación al último mes)
Gráfica de Excel

Macros Para Imprimir varias hojas segun el valor de una celda

Publicado por Eduardo (7 intervenciones) el 09/09/2016 04:18:49
Buenas Noches.

Antes que nada, quiero aclara que no se nada de VBA.

Estoy tratando de hacer una macro que Imprima determinadas hojas dada una condicion, esta misma es el valor de una celda.
Para esto escribi esta Macro, pero me da Error 1004, y la verdad es he intentado modificar varias cosas, todas de manera intuitiva, pero no he tenido exito.

Agradeceria muho su ayuda al respecto.


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
Sub Imprimir()
 
Dim Users As Integer
 
'Esta macro imprimime las hojas necesarias segun la cantidad de usuarios que se informaron
If Worksheets("Inicio").Range(Users).Value = "1" Then
        sheets(Array("Solicitante 1", "Final")).Select
        sheets("Final").Activate
        Application.PrintCommunication = False
    Else
        If Worksheets("Inicio").Range(Users).Value = "2" Then
            sheets(Array("Solicitante 1", "Solicitante 2", "Final")).Select
            sheets("Final").Activate
            Application.PrintCommunication = False
        Else
            If Worksheets("Inicio").Range(Users).Value = "3" Then
                sheets(Array("Solicitante 1", "Solicitante 2", "Solicitante 3", "Final")).Select
                sheets("Final").Activate
                Application.PrintCommunication = False
            Else
                If Worksheets("Inicio").Range(Users).Value = "4" Then
                    sheets(Array("Solicitante 1", "Solicitante 2", "Solicitante 3", "Solicitante 4", "Final")).Select
                    sheets("Final").Activate
                    Application.PrintCommunication = False
                Else
                    Worksheets("Inicio").Range(Users).Value = "5"
                        sheets(Array("Solicitante 1", "Solicitante 2", "Solicitante 3", "Solicitante 4", "Solicitante 5", "Final")).Select
                        sheets("Final").Activate
                        Application.PrintCommunication = False
 
                End If
            End If
        End If
    End If
End Sub
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 Antoni Masana
Val: 4.173
Plata
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Macros Para Imprimir varias hojas segun el valor de una celda

Publicado por Antoni Masana (1482 intervenciones) el 09/09/2016 06:59:47
¿Que valor tiene Users?

El formato correcto es este:

1
Worksheets("Sheet1").Range("A1").value

El valor de Users es un string y aparte de definirlo como integer (Entero) no le asignas valor

Otra forma más corta de escribir esta rutina. En el ejemplo he puesta la celda A1, cambialo por la que corresponda.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Sub Imprimir()
    Dim T1 as string, T2 as string, T3 as string, T4 as string, T5 as string
 
    T1 = "Solicitante 1": T2 = "Solicitante 2": T3 = "Solicitante 3"
    T4 = "Solicitante 4": T5 = "Solicitante 5"
 
    'Esta macro imprime las hojas necesarias segun la cantidad de usuarios
    '   que se informaron
 
    Select Worksheets("Inicio").Range("A1").Value
        case 1:  sheets(Array(T1, "Final")).Select
        case 2:  sheets(Array(T1, T2, "Final")).Select
        case 3:  sheets(Array(T1, T2, T3, "Final")).Select
        case 4:  sheets(Array(T1, T2, T3, T4, "Final")).Select
        case 5:  sheets(Array(T1, T2, T3, T4, T5, "Final")).Select
    End Select
    sheets("Final").Activate
    Application.PrintCommunication = False
End Sub

El Case 5: lo puedes cambiar por Case Else:

Saludo
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 12
Ha aumentado 1 puesto en Excel (en relación al último mes)
Gráfica de Excel

Macros Para Imprimir varias hojas segun el valor de una celda

Publicado por Eduardol (7 intervenciones) el 10/09/2016 00:57:26
Bien, Muchas Gracias a ver si entiendo.

SI, el valor de la celda A1 es Igual a 1, entonces deberia imprimir las Hojas T1 y FINAL.

Ahora bien, en que parte esta declarado que si el valor es 1 tiene que hacer eso, y si es 2 tiene que ser otra cosa?

Por lo poco que puedo entender, despues de
Select Worksheets("Inicio").Range("A1").Value
lo que dice, es en que el caso de ser "1", el valor tiene que hacer tal cosa y asi sucesivamente?

Te pido disculpas por mi ignorancias, pero honestamente, soy un NOOB en visualbasic, y si bien tengo una leve interpretacion de lo que esta escrito, no se para nada la sintaxis.

Desde ya estoy muy agradecido por tu ayuda.

Muchas 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.173
Plata
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Macros Para Imprimir varias hojas segun el valor de una celda

Publicado por Antoni Masana (1482 intervenciones) el 12/09/2016 08:56:35
Haber si me explico un poco mejor

Este es tu codigo que da un error 1004

1
2
3
4
5
6
7
8
9
10
Sub Imprimir()
 
Dim Users As Integer
 
'Esta macro imprimime las hojas necesarias segun la cantidad de usuarios que se informaron
If Worksheets("Inicio").Range(Users).Value = "1" Then
        sheets(Array("Solicitante 1", "Final")).Select
        sheets("Final").Activate
        Application.PrintCommunication = False
. . .


En la linea 6 tienes una condición que dice:

En la hoja "Inicio" toma el valor de la celda 0 (que es lo que vale la variable Users) y si vale 1 ejecuta lo que hay en las líneas 7, 8 y 9

El parámetro de Range es un texto que representa una celda o dicho de otra forma unas coordenadas X-Y, por ejemplo A1, B15, AB345, etc. NO un valor númerico que ademas no representa coordenadas.


En mi ejemplo en la linea 10 pongo una celda a modo de ejemplo

1
Select Worksheets("Inicio").Range("A1").Value

Puede ser A1, H67, CD346, eso depende de ti, de la celda donde esta definido lo que deseas imprimir.

Por Otro lado T1, T2, etc, NO son nombres de hojas, son variables con el nombre de la Hoja, prodriá haberlas llamado a las variables H1, H2, etc.o Hoja_1, Hoja_2, Hoja_3, etc. El nombre es lo de menos y si es corto para el caso mejor



Que se consigue con esto:

- Primero escribir nombre largos y complejos menos veces: No es lo mismo escribir 5 veces "Solicitante 1" que T1

- Segundo en código queda más simple y fácil de leer



Otra cosa la instrucción Select Case es equivalente al IF THEN ELSEIF ELSEIF THEN

Un ejemplo

1
2
3
4
5
6
7
Select Var
    case 1: hacer A
    case 2: hacer B
    case 3: hacer C
    case 4: hacer D
    case else: hacer E
end Select

Es exactamente lo mismo que

1
2
3
4
5
6
7
8
9
10
11
IF Var = 1 then
   hacer A
Elseif Var = 2 then
   hacer B
Elseif Var = 3 then
   hacer C
Elseif Var = 4 then
   hace D
Else
   hacer E
End IF


Done pone "hacer A" significa instrucciones varias sin especificar.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 11
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Macros Para Imprimir varias hojas segun el valor de una celda

Publicado por Jose Francisco Valle Fiallos (6 intervenciones) el 27/04/2019 00:06:21
Buenas tardes

Tengo una hoja de excel con 8 paginas, quisiera solo imprimir las paginas que aparecen enumeradas mediante una formula en excel, por ejemplo si la pagina 1 la tabla esta vacia no la enumera, pero si tiene contenido la enumera como la 1, hay paginas que no salen enumeradaspor lo que no me interesa imprimirlas

La condicion seria que imprimiera la pagina 1 si la celda G2, es mayor que cero
que imprimiera la pagina 2 si la celda G48 es mayor que cero
Que imprima la pagina 3 si la celda G94 es mayor que cero
que imprimiera la pagina 4 si la cela G140 es mayor que cero
que imprimiera la pagina 5si la cela G186 es mayor que cero
que imprimiera la pagina 6 si la cela G232 es mayor que cero
que imprimiera la pagina7 si la cela G278 es mayor que cero
que imprimiera la pagina8 si la cela G324 es mayor que cero

Sera posible que alguien me ayude con una macros?

Gracias

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
Imágen de perfil de Antoni Masana
Val: 4.173
Plata
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Macros Para Imprimir varias hojas segun el valor de una celda

Publicado por Antoni Masana (1482 intervenciones) el 27/04/2019 10:48:30
Creo que esto hace lo que deseas y si no lo hace envía un fichero para probarlo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Sub Macro1()
    Dim Hojas() As Variant, Num As Byte
 
    Num = 0
    If Sheets("Hoja1").Range("G2")   > 0 Then Num = Num + 1: ReDim Preserve Hojas(Num): Hojas(Num) = "Hoja1"
    If Sheets("Hoja2").Range("G48")  > 0 Then Num = Num + 1: ReDim Preserve Hojas(Num): Hojas(Num) = "Hoja2"
    If Sheets("Hoja3").Range("G94")  > 0 Then Num = Num + 1: ReDim Preserve Hojas(Num): Hojas(Num) = "Hoja3"
    If Sheets("Hoja4").Range("G140") > 0 Then Num = Num + 1: ReDim Preserve Hojas(Num): Hojas(Num) = "Hoja4"
    If Sheets("Hoja5").Range("G186") > 0 Then Num = Num + 1: ReDim Preserve Hojas(Num): Hojas(Num) = "Hoja5"
    If Sheets("Hoja6").Range("G232") > 0 Then Num = Num + 1: ReDim Preserve Hojas(Num): Hojas(Num) = "Hoja6"
    If Sheets("Hoja7").Range("G278") > 0 Then Num = Num + 1: ReDim Preserve Hojas(Num): Hojas(Num) = "Hoja7"
    If Sheets("Hoja8").Range("G324") > 0 Then Num = Num + 1: ReDim Preserve Hojas(Num): Hojas(Num) = "Hoja8"
 
    IF Num = 0 Then
       MsgBox "No hay hojas para imprimir"
    Else
        Sheets(Hojas).Select
        ActiveWindow.SelectedSheets.PrintOut _
                     Copies:=1, _
                     Collate:=True, _
                     IgnorePrintAreas:=False
        Sheets("Hoja1").Select
    End If
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
1
Comentar
sin imagen de perfil
Val: 11
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Macros Para Imprimir varias hojas segun el valor de una celda

Publicado por Jose Francisco (6 intervenciones) el 29/04/2019 23:33:46
Buenas tardes

Gracias, solo me aparece el error 9, en tiempo de ejecucion y me manda a la fila 5, muchas gracias

Solo como observacion el archivo de excel tiene 5 hojas, una de estas hojas se llama salida, en esta hoja que se llama salida, estan las 8 paginas que deseo imprimir, solo que con la condicion antes mencionada

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
sin imagen de perfil
Val: 11
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Macros Para Imprimir varias hojas segun el valor de una celda

Publicado por Jose Francisco (6 intervenciones) el 30/04/2019 01:54:57
Buenas tardes

Envio el fichero, la hoja que estoy trabajando es la que dice Salidas
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.173
Plata
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Macros Para Imprimir varias hojas segun el valor de una celda

Publicado por Antoni Masana (1482 intervenciones) el 30/04/2019 08:48:46
Entendí mal el problema, confundi páginas por hojas.

Ahora esta arreglado:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Sub Imprimir()
    Sheets("Salida").Select
    If Range("G2").Value > 0 Then Call Imprime_Pagina(1)
    If Range("G48").Value > 0 Then Call Imprime_Pagina(2)
    If Range("G94").Value > 0 Then Call Imprime_Pagina(3)
    If Range("G140").Value > 0 Then Call Imprime_Pagina(4)
    If Range("G186").Value > 0 Then Call Imprime_Pagina(5)
    If Range("G232").Value > 0 Then Call Imprime_Pagina(6)
    If Range("G278").Value > 0 Then Call Imprime_Pagina(7)
    If Range("G324").Value > 0 Then Call Imprime_Pagina(8)
End Sub
 
Sub Imprime_Pagina(Num)
    ActiveWindow.SelectedSheets.PrintOut _
                 From:=Num, _
                 To:=Num, _
                 Copies:=1, _
                 Collate:=True, _
                 IgnorePrintAreas:=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
1
Comentar
sin imagen de perfil
Val: 11
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Macros Para Imprimir varias hojas segun el valor de una celda

Publicado por Jose Francisco (6 intervenciones) el 30/04/2019 17:18:55
Buenos días

Amigo funciono a la perfección, mil gracias, sos un genio

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

Macros Para Imprimir varias hojas segun el valor de una celda

Publicado por Wilmary (2 intervenciones) el 30/05/2020 00:03:48
Hola buenas tardes, necesito tu colaboración, Soy Administradora, manejo excel en un nivel intermedio, intente aplicar tu macro a un archivo pero me genera un error 9 por éste código Sheets(Hojas).Select, cambie el nombre de hojas por el nombre de una hoja del archivo e imprimió esa hoja, como se hace para que imprimas las hojas que cumplan con la condición que sean mayor a "0". Gracias de antemano.
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.173
Plata
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Macros Para Imprimir varias hojas segun el valor de una celda

Publicado por Antoni Masana (1482 intervenciones) el 30/05/2020 12:32:13
Como no se que datos tienes ni como has aplicado la macro no puedo ayudarte sin ver el libro.

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

Macros Para Imprimir varias hojas segun el valor de una celda

Publicado por Wilmary Salazar (2 intervenciones) el 31/05/2020 20:13:01
Hola, revisé tu código y pude entender que realizas un llamado a otras macros predefinidas si se cumple la condición.
mi archivo tiene 32 hojas, entonces no quería crear tantas mini macros, intenté con el siguiente código, pero no funciona bien en el caso de las hojas sin informacón me imprime la Hoja llamada "Salida", no entiendo el porqué.
1
2
3
4
5
6
7
8
9
10
Sub Imprimir()
 
    Sheets("Salida").Select
    If Range("D3").Value > 0 Then Sheets(Array("9;00", "GL_9;00")).Select
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
        IgnorePrintAreas:=False
 
    If Range("D4").Value > 0 Then Sheets(Array("9;30", "GL_9;30")).Select
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
        IgnorePrintAreas:=False
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.173
Plata
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Macros Para Imprimir varias hojas segun el valor de una celda

Publicado por Antoni Masana (1482 intervenciones) el 31/05/2020 21:24:52
Este foro empezó con:

1º - un problema de Eduárdo.
2º - siguió José Francisco.
3º - y ahora Wilmary Salazar

Y cada uno tiene un problema diferente con ciertos matices iguales.
Cada uno tiene un problema para una situación diferente y formato de datos diferentes y una necesidades diferentes.
El titulo del apartado "Macros Para Imprimir varias hojas segun el valor de una celda" es muy ambiguo y muy general.
Mi consejo es abrir un nuevo chat para el problema y si un caso hacer referencia al que has tomado de referencia que mezclar problemas.
Cada caso necesita una solución diferente por que cada uno lo hace como cree mejor hacerlo.
Yo desconozco que datos tienes como están organizados y que quieres hacer con ellos.
Uno de los problemas que tenemos a la hora de explicar es que no sabemos y lo digo en primera persona porque soy el primero que me cuesta explicar y mucho más explicar por escrito.
Para solucionar tu problema he de entender tu problema y para empezar no se cuantas hojas (de Excel) tiene tu libro (de Excel) y cuando te refieres a que tu libro tiene 32 hojas son de Excel o es una hoja de Excel que imprime 32 hojas de papel. Segundo no se como se llama tu hoja u hojas de Excel, tampoco se que es "Cuando la condición sea mayor de 0" ¿Cual condición? Teniendo en cuanta que un una hoja de Excel de la versión a partir de 2007 tiene 17.179.869.184 de celdas se me hace un poco difícil adivinar cual es la condición.

Sube un libro de muestra a este foro o puedes enviarlo a mi correo (amasana@hotmail.com)y con mucho gusto te ayudare a solventar 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