【问题标题】:How do I read the value of a checkbox in a word (*.doc) file in VB.net using a Range object?如何使用 Range 对象读取 VB.net 中 word (*.doc) 文件中复选框的值?
【发布时间】:2009-06-19 04:34:50
【问题描述】:
如何在 VB.net 中使用范围对象读取 word (*.doc) 文件中复选框的值?
这是我目前所拥有的:
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
其中“MyCheckbox”是word文档中复选框的书签。
【问题讨论】:
标签:
vb.net
ms-word
office-interop
【解决方案1】:
您没有使用复选框本身的名称读取复选框的值的任何特殊原因?
如果您的书签定义的范围包含一个复选框,则根据插入复选框的方式,它将在InlineShapes 集合(如果复选框与文本内嵌插入)或Shapes 集合中找到(如果作为浮动对象插入。)
然后您需要遍历 Shapes 或 InlineShapes 的集合以查找相关复选框。
遍历 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
...
这应该让你更接近,但如果复选框的名称是可预测的,最好直接通过名称来解决它。