Imprimir solo casillas de verificación marcadas

Quisiera poder imprimir solo los nombres de una lista que estén marcados con la casilla de verificación.

Y no encuentro la manera de hacerlo.

1 Respuesta

Respuesta

Algunos detalles ayudarían a ayudarte: ¿Son casillas de formularios o ActiveX? ¿Están sobre celdas? Esa lista de personas ¿está en las celdas de una columna al lado de ñas casillas?

Comentas

Abraham Valencia

Te comento,

la idea es, rellenar datos en excel, nombre en una celda, apellidos en otra y DNI en otra.

Y que al marcar la casilla de verificación que yo quiera, me acabe imprimido tantos diplomas en una hoja de word, según las personas marcadas en las casillas de excel. Lo había puesto como casilla de formulario. 

Muchas gracias Abraham

Vamos a imaginar que tus datos están en las columnas "A", "B" y "C", entonces podrías colocar tu casillas en la columna "D". Cuando le das click derecho a las casillas de formularios puedes elegir "Formato de Control" y ahí en la pestaña "Control" verás una propiedad llamada "Vincular con la celda". Para cada casilla vincúlala con la celda de la columna "E" de su fila correspondiente, es decir, por ejemplo, para la casilla de "D4", vincúlala con la celda "E4". Has eso con todas. Como, aparentemente, recién vas a crearlas, no será mucho trabajo: Creas una y la vas vinculando. De ese modo al activar una casilla en la celda vinculada saldrá la palabra "Verdadero". Puedes ocultar esa columna si deseas.

Una vez terminado eso entras al editor de VBA (VBE) y activas la referencia a "Microsoft Word xx.0 Object Library" (en donde "xx" es el equivalente al número de versión de tu Office). Luego, en un módulo "standard" pega lo siguiente:

Sub CopiaraWord()
Dim objWord  As Object
Dim celda As Range
Dim Fila As Long
Set objWord = CreateObject("Word.Application")
objWord.documents.Add
For Each celda In Range("E2:E50")
If celda.Value = "Verdadero" Then
MsgBox "UN"
Let Fila = celda.Row
Range("A" & Fila & ":" & "C" & Fila).Copy
objWord.Selection.PasteAndFormat (wdFormatOriginalFormatting)
End If
Next celda
objWord.Visible = True
Set objWord = Nothing
End Sub

No olvides ajustar tu rango. Yo he supuesto que tienes encabezados en la fila 1 y datos hasta la fila 50. Esa macro revisa la columna "E" (la de celdas vinculadas) y si está activa la casilla ("verdadero" en la celda vinculada) envía los datos a Word. 

Comentas

Abraham Valencia

Buenas noches, funciona perfectamente,

mi problema es que lo necesito para rellenar los nombres, apellidos, etc....de un diploma que ya tengo hecho en una hoja especifica de word.

Gracias de antemano.

Por eso la importancia de los detalles que te comenté al inicio y que, evidentemente, olvidaste nuevamente.

Para casos como el tuyo en realidad lo adecuado es usar "Combinar correspondencia" que es una herramienta de Microsoft Word y por lo tanto debes usarla desde dicho programa. La ventaja es que también puedes filtrar los valores de la columna vinculada a tu casillas. Cuando usas el asistente para realizar la combinación, en el "Paso 3" te da dicha opción. En el cuadro de diálogo que aparece:

Usas el filtro de los campos. En este caso yo elegí "True" (Verdadero) y listo:

Esa es la forma.

Abraham Valencia

Ah, solo por si acaso: Si quieres hacer algo así (Combinar correspondencia) pero desde el Excel, debes seguir usando, desde el VBA, un objeto Word, pero la programación de aquello, es mucho más larga que lo que te envié de ejemplo hace unas horas, es decir, involucra más tiempo/trabajo y conocimiento por lo que mi sugerencia sigue siendo hacerlo desde el Word y el asistente de la herramienta.

Abraham Valencia

Lo hice como me dijiste y funciona como quería. Muchas gracias

Aja, que bueno. Feliz año.

Abraham Valencia

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas