Macro para imprimir

03/12/2007 - 02:25 por Ivan S | Informe spam
hola a todos,

Si tengo una hoja de excel que esta configurada para que se imprima en 6
hojas de papel. Cómo puedo crear un botón para que se impriman solo algunas
de esas hojas?
El criterio para seleccionar las hojas que se van a imprimir es que la
primer celda de esa selección no sea una celda en blanco. Esta celda tiene
una fórmula que arroja una celda en blanco o un texto de acuerdo a la
condición de otras hojas.
No tengo mucho conocimiento de VB, por lo que les pido su ayuda para
realizar esta macro, o en caso que conozcan una forma más sencilla por favor
díganmela.
 

Leer las respuestas

#1 Héctor Miguel
03/12/2007 - 03:16 | Informe spam
hola, Ivan S !

Si tengo una hoja de excel que esta configurada para que se imprima en 6 hojas de papel.
Como puedo crear un boton para que se impriman solo algunas de esas hojas?
El criterio para seleccionar las hojas que se van a imprimir es que la primer celda de esa seleccion no sea una celda en blanco.
Esta celda tiene una formula que arroja una celda en blanco o un texto de acuerdo a la condicion de otras hojas.
No tengo mucho conocimiento de VB, por lo que les pido su ayuda para realizar esta macro
o en caso que conozcan una forma mas sencilla por favor diganmela...



el siguiente ejemplo "asume/supone/..." que cada hoja impresa equivale a 10 filas y 4 columnas
-> revisa el bucle "For Fila = 1 To 61 Step 10" y la instruccion con el ".Resize(10, 4)" <= OJO
por lo que "revisa" si la primer celda de cada hoja (impresa) contiene una cadena de texto de longitud cero
o va "construyendo" lo que sera el rango de impresion (cuando dicha celda no este "vacia")
macro que puedes asigar a algun objeto/boton/figura/... incrustado en esa hoja
y una vez a/probado puedes cambiar la instruccion .PrintPreview por un simple .PrintOut

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

Sub Imprimir_condicionado()
Dim Fila As Integer, Rango As String
For Fila = 1 To 61 Step 10
If Range("a" & Fila) <> "" Then _
Rango = Rango & Range("a" & Fila).Resize(10, 4).Address & ","
Next
If Rango = "" Then Exit Sub
ActiveSheet.PageSetup.PrintArea = Left(Rango, Len(Rango) - 1)
ActiveSheet.PrintPreview
End Sub

Preguntas similares