Activar un CheckBox de Word desde una macro en Excel

Hola, mi consulta es la siguiente:

Tengo un archivo excel donde completo datos de clientes los cuales, a través de una macro, son volcados en un nuevo documento word (el nuevo documento word creado por la macro hace una copia del archivo word original y tiene "palabras clave" para ser reemplazadas por las que están en excel).

Ahora lo que necesitaría hacer es:

Tengo checkbox en excel en la celda "a10" necesitaría que si esta activa también se active un checkbox llamado "SI" en el documento de word que creo la macro.

Como puedo crear el condicional y la linea que me activa el checkbox en word?

la linea se me ocurrió objWord.FormFields("SI").CheckBox.Value = -1 pero no me funciona. No se que estaré haciendo mal. La probé suelta sin condicional por las dudas pero igualmente no funciono.

Desde ya agradezco su ayuda de antemano.

Saludos.

Sub Completar_formulario()
Dim datos(0 To 1, 0 To 8) As String '(columna,fila)
patharch = ThisWorkbook.Path & "\plantilla.dot"
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
objWord.documents.Add Template:=patharch, NewTemplate:=False, DocumentType:=0
datos(0, 0) = "rdia"
datos(1, 0) = Hoja1.Cells(1, 1) 'datos(columna,fila) = Hoja1.cells(fila,columna)
datos(0, 1) = "rmes"
datos(1, 1) = Hoja1.Cells(2, 1)
datos(0, 2) = "raño"
datos(1, 2) = Hoja1.Cells(3, 1)
datos(0, 3) = "rsolicitante"
datos(1, 3) = Hoja1.Cells(4, 1)
datos(0, 4) = "rsolicitud"
datos(1, 4) = Hoja1.Cells(5, 1)
datos(0, 5) = "rcuit"
datos(1, 5) = Hoja1.Cells(6, 1)
datos(0, 6) = "rmonton"
datos(1, 6) = Hoja1.Cells(7, 1)
datos(0, 7) = "rmontol"
datos(1, 7) = Hoja1.Cells(8, 1)
datos(0, 8) = "rbeneficio"
datos(1, 8) = Hoja1.Cells(9, 1)
For i = 0 To UBound(datos, 2)
textobuscar = datos(0, i)
objWord.Selection.Move 6, -1
objWord.Selection.Find.Execute FindText:=textobuscar
While objWord.Selection.Find.found = True
objWord.Selection.Text = datos(1, i) 'texto a reemplazar
objWord.Selection.Move 6, -1
objWord.Selection.Find.Execute FindText:=textobuscar
Wend
Next i
End Sub

1 respuesta

Respuesta
1

Agrega después de tu Next i, las siguientes líneas

valor = ActiveSheet.CheckBox1.Value
objWord.ActiveDocument.FormFields("SI").CheckBox.Default = valor

En la primer línea estoy guardando el valor de tu checkbox de excel, y en la segunda línea estoy cambiando el checkbox de word con lo que tienen la variable valor. Si el checkbox de excel es "verdadero" entonces el checkbox de word se pondrá "verdadero".

No sé como tienes el checkbox de excel, si tienes un checkbox de formulario o un checkbox de control de activex, el ejemplo que te puse es para un control activex.

Si lo tienes de formulario, entonces estas serías las líneas

v = ActiveSheet.Shapes("Check Box 1").OLEFormat.Object.Value
If v = 1 Then valor = True Else valor = False
objWord.ActiveDocument.FormFields("SI").CheckBox.Default = valor

Saludos.Dante Amor
Si es lo que necesitas.

Me sirvió de mil maravillas!!!!! Muchas gracias!!! Por algo son expertos!!!

cambiando ".Value" por ".default" se me solucionó.

Ahora una duda que me acaba de surgir. Si quisiera escribir dentro de un "campo de formulario con texto" cual sería la linea de código?

Probé con objWord.ActiveDocument.FormFields("DIA").Result = "18" pero no funciona. Debe ser que en vez de "Result" debo ponerle otra cosa como me paso con el checkbox.

Desde ya mas que agradecido!

Con mucho gusto lo reviso, podrías finalizar esta pregunta por favor, y crear una nueva por cada petición.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas