1、新建Word,在开发工具栏里面点开录制宏,选择自己喜欢的操作方式,这里将宏指定到键盘,然后键入一组新快捷键。点击指定,然后手动添加一个CheckBox复选框。停止录制,打开Visual Basic编辑器,进入刚才录制宏的代码块。如下图
2、里面非常重要的一句话,第二句:Selection.Inli艘绒庳焰neShapes.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 = 100End 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)'去除已经加复选框的字符串 LoopEnd Sub
6、以上完成后回到文档快捷键运行即可,如果出现问题,建议通过F8逐行运行调试。