2008-11-11 8 views
5

Comment lire la valeur d'une case à cocher dans un fichier word (* .doc) dans VB.net en utilisant un objet range?Comment lire la valeur d'une case à cocher dans un fichier word (* .doc) dans VB.net en utilisant un objet Range?

C'est ce que j'ai jusqu'à présent:

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 

où « myCheckBox » est le signet de la case à cocher dans le document Word.

Répondre

1

Vous ne lisez pas la valeur de la case à cocher en utilisant le nom de la case à cocher?

Si la plage définie par votre signet contient une case à cocher, puis, en fonction de la façon dont la case est insérée, elle se trouve soit dans la collection InlineShapes (si la case insérée en ligne avec le texte) ou la collection Shapes (si elle est insérée en tant qu'objet flottant.)

Vous devez ensuite parcourir la collection de formes ou de formes en ligne en recherchant la case à cocher en question.

grâce à des contrôles dans Itération collection 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 
... 

Cela devrait vous rapprocher, mais si le nom de la case à cocher est prévisible, il est préférable de l'adresser directement par son nom.

Questions connexes