在WORD文档(docx)中插入CheckBox实现让用户选择的功能。
插入CheckBox有两种方法
1.内容控件(Content Controls)
使用VBA访问
Public Sub test()
Dim ctrl As ContentControl
For Each ctrl In ActiveDocument.ContentControls
If ctrl.Type = wdContentControlCheckBox Then
ctrl.Checked = Not ctrl.Checked
MsgBox ctrl.Tag '属性中的标记
MsgBox ctrl.Title '属性中的标题
End If
Next
End Sub
2.ActiveX控件
使用VBA访问
Public Sub test()
Dim Obj As InlineShape
For Each Obj In ActiveDocument.InlineShapes
If Obj.Type = 5 Then
If Obj.OLEFormat.ClassType Like "*.CheckBox.*" Then Debug.Print Obj.OLEFormat.Object.Caption
End If
Next Obj
End Sub
一开始LD使用第二种方法的CheckBox,文件少的时候没发现什么问题。就是发现打开的docx文件的时间特别长,大概得有二十几秒,其实才207K的文档。
使用内容控件代替ActiveX相同个数的CheckBox,使用内容控件也就2-3秒而且文件尺寸小很多。
更快的使用OpenXML SDK,他是直接打开文件而不解析计算里面的公式等等WORD的功能因此性能会比VBA脚本的快很多。
OpenXML SDK性能还是不能满足那就趁早使用数据库吧,不要浪费时间了!