Macro para imprimir varias "fichas"

10/01/2008 - 13:13 por vitobacon | Informe spam
Hola a todos.
Tengo un libro con una hoja que hace de base de datos y otra que contiene un
formulario.
En el formulario tengo en la celda G3 una lista de validación. Seleccionando
un elemento me cambia todas las casillas del formulario (leyendo la base de
datos).
La lista desplegable tiene muchos elementos y los tengo que imprimir todos.
Me gustaría saber si es posible crear una macro que vaya seleccionando uno a
uno los elementos de la celda G3 e imprimiendo la hoja del formulario, así
me ahorraría el tedioso proceso de seleccionar un ítem e imprimir la hoja,
seleccionar el siguiente ítem e imprimir, etc.
Un saludo y gracias por vuestra dedicación.
 

Leer las respuestas

#1 Ivan
10/01/2008 - 16:06 | Informe spam
hola

... tengo en la celda G3 una lista de validación. Seleccionando




un elemento me cambia todas las casillas del formulario (leyendo la base de
datos).
si es posible crear una macro que vaya seleccionando uno a
uno los elementos de la celda G3 e imprimiendo la hoja del formulario,... <<<



si quieres prueba a ver si te vale el codigo que te pongo al final
tras modifgicar segun las caracteristicas de tu archivo las partes que
te comento:

:a) aqui => ' For Each celda In Range("Items")'

cambia Range("Items") por el rango de donde G3 toma la lista de
validacion. Si como parece esta en otro libro deberias poner algo
tipo=>

For each celda in
Workbooks("NombreDelLibro").Worksheets("NombreDeLaHoja").Rabge("RangoDeLaLista")

OJO= en una sola linea o con caracter de continuacion de linea)


b) aqui y en la siguiente linea => 'Worksheets("Hoja1").[G3] = celda'

cambia "Hoja1" por el nombre de la hoja donde esta el formulario a
imprimir (y G3, claro). Tambien entre comillas

c) pegalo en un modulo NORMAL (por si no sabes como => abre el editor
de VBa [alt+F11] => menu Insertar => Modulo [a secas] => aqui copias/
pegas lo siguiente y realizas los cambios comentados, asegurandote de
dejar el resto igual)

NOTA: no se si sera necesario el uso de DoEvnts, pero al ser tantas
hojas, creo recordar haber leido por aqui que no sobra, para
refrescasr el proceso)

''Pega desde aqui--
Sub TestImprimirFichas()
Dim celda As Range
For Each celda In Range("Items")
DoEvents
Worksheets("Hoja1").[G3] = celda
Worksheets("Hoja1").PrintOut
Next
End Sub
''Pega hasta aqui--

espero te ayude

un saludo
Ivan

Preguntas similares