Imprimr hojas

Hola
Quisiera hacer una macro la cual imprima unas determinadas hojas de un libro si se cumple una condición. Ejem
Nombre de las ojas: C1, C2, C3, C4, C5, ...........C10 (se entiende?)
y la condicion :  A1 <> 0
Gracias de antemano

1 Respuesta

Respuesta
1
La entiendo en parte, así que van algunos ejemplos para que encuentres el que más se ajusta a lo que necesitas
Para controlar una impresión podemos utilizar el evento BeforePrint (antes de imprimir) colocándola en el objeto ThisWorkBook (o este libro)
Private Sub Workbook_BeforePrint(Cancel As Boolean)
If ActiveSheet.Range("A1") = 0 Then Cancel = True
End Sub
Como esta rutina se ejecuta cuando le das la orden de imprimir, ya sea desde otra macro o el botón de la barra Excel, si la celda A1 de la hoja que estás intentando imprimir es 0 se cancelará.
Por lo tanto te sirve para cualquier hoja.
Aclarame si esto es lo que necesitas, sino explicámelo un poco más.
Sdos
Elsa

http://es.geocities.com/lacibelesdepunilla/macros
Hola
Muchas gracias, probablemente no me explico bien, lo siento.
Casi es eso lo que quiero, pero no del todo.
Supón que mi libro tiene 11 hojas, 1 hoja es una tabla, y las 10 retantes son "plantillas" que rescatan los datos de la hoja de la tabla. Bien, la cantidad de datos que hay en tabla puede varirar, dependiendo de esa cantidad se llenaran determinadas "hojas plantilla". Bueno, pues lo que quiero que haga la macro es que determine cuales son las hojas plantillas con datos (de las 10) y me las imprima.
Entiendo que la que me planteas me imprimiría la hoja de la tabla porque en ésta el rango A1 esta con algún dato, y lo que se pretende se que me imprima de las 10 restantes, las que el rango A1 <> 0 (oesa que A1 tenga algún dato distinto de 0)
Muchísimas gracias
Ahora sí. Entonces necesitas un bucle que recorra las hojas imprimiéndolas si corresponde.
En el Editor de macros, insertá un módulo y copiá este ejemplo. Ajustá el nbre de tu hoja 'tabla' y reemplazá PrintPreview (vista previa) por PrintOut para imprimir
Sub ImprimexCondicion()
For Each hoja In Sheets
If hoja.Name <> "Hoja1" And hoja.Range("A1") <> 0 Then hoja.PrintPreview
Next hoja
Muchas gracias
Perfecto!
Me quedo así:
Sub IMPRIMIR()
Dim Mensaje, Estilo, Título, Ayuda, Ctxt, Respuesta, MiCadena
Mensaje = "¿Desea imprimir CARTELERIA?"  
Estilo = vbYesNo + vbQuestion + vbDefaultButton1    
Título = "Imprimir"   
Respuesta = MsgBox(Mensaje, Estilo, Título, Ayuda, Ctxt)
If Respuesta = vbYes Then   
    Dim ValorPred, MiValor
    Mensaje = " Introduzca cantidad de copias"    
    Título = "Imprimir"   
    ValorPred = "1"    
    MiValor = InputBox(Mensaje, Título, ValorPred)
    If MiValor <> "" Then
        For Each hoja In Sheets
        If hoja.Name <> "Introducir Datos" And hoja.Name <> "Hoja con Datos" And hoja.Range("A7") <> 0 Then hoja.PrintOut Copies:=MiValor
        Next hoja
        MsgBox "Extracción e impresión realizada"
        Else
        MsgBox ("Extracción de datos realizada" & Chr(13) & "Impresión cancelada por el usuario")
    End If
Else    ' El usuario eligió el botón No.
    MsgBox "Final de extracción"
End If
End Sub
Repito: MUCHAS GRACIAS

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas