¿Cómo leo el valor de una casilla de verificación en un archivo de palabra (* .doc) en VB.net usando un objeto Range?

StackOverflow https://stackoverflow.com/questions/281990

  •  08-07-2019
  •  | 
  •  

Pregunta

¿Cómo leo el valor de una casilla de verificación en un archivo de palabra (* .doc) en VB.net usando un objeto de rango?

Esto es lo que tengo hasta ahora:

Dim app As New Word.Application
Dim doc As Document
doc = app.Documents.Open("C:\myDoc.doc")
dim chkBox as Bookmark
chkBox = doc.Bookmarks("MyCheckbox")
Dim rng as Range
rng = chkBox.Range

donde " MyCheckbox " es el marcador de la casilla de verificación en el documento de Word.

¿Fue útil?

Solución

¿Alguna razón particular por la que no está leyendo el valor de la casilla de verificación utilizando el nombre de la casilla de verificación en sí?

Si el rango definido por su marcador contiene una casilla de verificación, entonces, dependiendo de cómo se inserte la casilla de verificación, se encontrará en la colección InlineShapes (si la casilla de verificación se inserta en línea con el texto) o la colección Shapes (si se inserta como un objeto flotante).

Debería recorrer la colección de Formas o InlineShapes buscando la casilla en cuestión.

Iterando a través de controles en la colección InlineShapes

Dim ctl As InlineShape
For Each ctl In rng.InlineShapes
    If ctl.Type = wdInlineShapeOLEControlObject Then
        If ctl.OLEFormat.ClassType Like "Forms.CheckBox*" Then
            'current version of ctl is a checkbox, do what you will with it.

        End If
    End If
Next ctl
...

Esto debería acercarlo, pero si el nombre de la casilla de verificación es predecible, es mejor abordarlo directamente por su nombre.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top