所以这是我目前面临的问题。我正在使用的报告中有子弹点(翼状)用作复选框。我试图创建一个脚本来查找和替换所有子弹与activex复选框这里是我的小代码:
Sub RemoveBulletsInsertCB()
Dim objParagraph As Paragraph
Dim objDoc As Document
Application.ScreenUpdating = False
Set objDoc = ActiveDocument
For Each objParagraph In objDoc.Paragraphs
If objParagraph.Range.ListFormat.ListType = WdListType.wdListBullet Then
objParagraph.Range.ListFormat.RemoveNumbers
'Call insertCB
End If
Next objParagraph
Application.ScreenUpdating = True
Set objDoc = Nothing
End Sub
Public Sub insertCB()
Set myOB = Selection.InlineShapes.AddOLEControl(ClassType:="Forms.CheckBox.1")
With myOB.OLEFormat
.Activate
Set myObj = .Object
End With
With myObj
'now you can name the field anything you want
.Name = ("CB1")
.value = False
'delete the caption, or have it say what you want
.Caption = ""
.Height = 11.5
.width = 18
End With
End Sub
上面的代码可以很好地删除项目符号,但是我想用一个不带任何标题的activex复选框替换它。
此外,当我想用activex复选框替换项目符号时,insertCB代码只能运行一次。
我希望我的问题是可以理解的,并提前感谢你。
答案 0 :(得分:1)
这是使用字符复选框替换子弹的基本方法。我从插入/符号中选择 - 在该对话框中有许多可能性。您只需录制一个宏即可获得所需的信息。
如果您决定使用ContentControl,也可以使用类似的方法。
注意使用Range
对象以及它如何“折叠”到它的起点以获得段落的开头。
如果您还需要缩进,则需要将其应用于该段落。我高度建议您为此目的定义和应用STLYE - 不要直接应用格式。
Sub RemoveBulletsInsertCB()
Dim objParagraph As Paragraph
Dim rng As word.Range
Dim objDoc As Document
Application.ScreenUpdating = False
Set objDoc = ActiveDocument
For Each objParagraph In objDoc.Paragraphs
If objParagraph.Range.ListFormat.ListType = WdListType.wdListBullet Then
Set rng = objParagraph.Range
rng.ListFormat.RemoveNumbers
insertCB rng
End If
Next objParagraph
Application.ScreenUpdating = True
Set objDoc = Nothing
End Sub
Public Sub insertCB(rng As word.Range)
rng.Collapse wdCollapseStart
rng.InsertSymbol Font:="Wingdings", CharacterNumber:=-3842, Unicode _
:=True
End Sub