如何用VBA向Word中添加CheckBox控件并修改属性
1、新建Word,在开发工具栏里面点开录制宏,选择自己喜欢的操作方式,这里将宏指定到键盘,然后键入一组新快捷键。点击指定,然后手动添加一个CheckBox复选框。停止录制,打开Visual Basic编辑器,进入刚才录制宏的代码块。如下图

2、里面非常重要的一句话,第二讨沃句:Selection.InlineShapes.AddOLEControl ClassType:="Forms.CheckBox.1"
这句就是向Word文档中添加CheckBox复选框的语句。第一句是选中当前文档的。
这里,我们可以直接调用ActiveDocument的InlineShapes方法,向当前文档中添加控件。
代码如下,
Set x = ActiveDocument.InlineShapes.AddOLEControl("Forms.CheckBox.1") ‘新建一个复选框并将此复选框赋值给x变量。

3、然后我们可以用复选框的.OLEFormat.Object方法来改变他的属性。
这里比如改变他的名称为"您好",宽度为100.用with语句如下
Set x = ActiveDocument.InlineShapes.AddOLEControl("Forms.CheckBox.1")
With x.OLEFormat.Object
.Caption = "您好"
.Width = 100
End With

4、这里我们用Do While······Loop语句来实现批量添加。
Dim x
Do While False
Set x = ActiveDocument.InlineShapes.AddOLEControl("Forms.CheckBox.1")
With x.OLEFormat.Object
.Caption = "您好"
.Width = 100
End With
Selection.MoveRight Unit:=wdCharacter, Count:=1
Loop

5、下一步,将要添加复选框的词组组成一个字符串,这里用“、”隔开。如:
头痛、偏头痛、心绞痛、坐骨神经痛、痛、其它痛
通过下面语句分别赋值给复选框的Caption属性,并将字符串的长度赋值给width属性。通过下面语句,语义见注释:
Sub 宏2()
'
' 宏2 宏
'
'
Dim str1, str2 As String
Dim len1, len2 As Integer
Dim x
str1 = "、头痛、偏头痛、心绞痛、坐骨神经痛、痛、其它痛"
str1 = StrReverse(str1)
'反转字符串,因为每次新建复选框都是新建在第一个
Do While Len(str1) > 0
'判断字符串是否取完。
len1 = InStr(str1, "、")
'取出第一个“、”出现的位置销痕。
str2 = Mid(StrReverse(Left(str1, len1)), 2)
'取出字符串中最后一个“、”后面的字符串并反转。
If str2 = "" Then str2 = Mid(StrReverse(str1), 2)
'如果“、”取完了,剩下的就是闲返夏最后一组。
len2 = Len(str2) * 10 + 25
'预定复选框的宽度,根据字符串长度
Set x = ActiveDocument.InlineShapes.AddOLEControl("Forms.CheckBox.1")
With x.OLEFormat.Object
.Caption = str2
.Width = len2
End With
Selection.MoveRight Unit:=wdCharacter, Count:=1
str1 = Right(str1, Len(str1) - len1)
'去除已经加复选框的字符串
Loop
End Sub

6、以上完成后回到文档快捷键运行即可,如果出现问题,建议通过F8逐行运行调试。
