c# checkbox automation ms-word bookmarks

c# - Formfields.BookMarks.get_Item(). Checkbox.Value no funciona(palabra de automatización)



automation ms-word (1)

Intento sin éxito cambiar el valor de una palabra casilla de verificación (desde la pestaña desarrollador) a través de la automatización en C #. Lo intenté de diferentes maneras, pero el único que siempre encuentro cuando busco en internet es:

encuentre el nombre de la casilla de verificación haciendo clic en las propiedades de la casilla cuando esté en modo desarrollador

object oCheckbox = "Checkbox_name" document_name.FormFields.get_Item(ref oCheckbox).CheckBox.Value = true/false;

Pero cada vez que ejecuto el código obtengo el siguiente error (el miembro de solicitud de la colección no existe), lo que significa que no hay ninguna casilla de verificación llamada "Nombre de casilla de verificación" en mi documento si entiendo correctamente.

También traté de marcar la casilla con el mismo nombre y ejecutar:

document_name.BookMarks.get_Item(ref oCheckbox).CheckBox.Value pero tampoco funciona ...


Si insertó una casilla de verificación haciendo clic en la casilla de verificación que se muestra en la pestaña del desarrollador, entonces supongo que está utilizando Word 2007 o posterior.

Y, si ese es el caso, entonces lo que insertó no era un campo de formulario, sino un control de contenido. Por lo tanto, si ingresa lo siguiente en la ventana inmediata en el editor de VBA:

?ActiveDocument.Content.FormFields.Count

... imprimirá "0". Mientras que si intentas:

?ActiveDocument.Content.ContentControls.Count

... debería imprimir un número mayor que cero, dependiendo de cuántos de estos insertes.

Para insertar una casilla de verificación de campo de formulario antigua, haga clic en el icono de carpeta con herramientas que se encuentra junto al icono de casilla de verificación; esto reduce más tipos de controles, incluidos "Formularios heredados" y "Controles ActiveX". Hay una casilla de verificación en cada grupo, pero es el primer grupo ("Formularios heredados") que creará la casilla de verificación que se muestra en la colección FormFields.

Sugeriría usar el control de contenido si es posible, ya que los campos de formulario antiguos pueden no ser compatibles para siempre.