Rangeオブジェクトを使用してVB.netのワード(* .doc)ファイルのチェックボックスの値を読み取るにはどうすればよいですか?
-
08-07-2019 - |
質問
範囲オブジェクトを使用してVB.netのワード(* .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
where" MyCheckbox" Wordドキュメントのチェックボックスのブックマークです。
解決
チェックボックス自体の名前を使用してチェックボックスの値を読み取らない特定の理由は何ですか?
ブックマークで定義された範囲にチェックボックスが含まれている場合、チェックボックスの挿入方法に応じて、 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
...
これにより近づきますが、チェックボックスの名前が予測可能な場合は、名前で直接アドレスする方が良いでしょう。
所属していません StackOverflow