在Word 2007及更早的版本中,使用的是复选框型窗体域选项插件;在2010及更新的版本中,使用的是 复选框内容控件。 可以通过下面的VBA, 批量将旧插件更换为新插件。
Sub ScratchMacro() 'A basic Word macro coded by Greg Maxey Dim oFF As FormField Dim oCC As ContentControl Dim strText As String Dim bVal As Boolean Dim arrVals() As String Dim lngIndex As Long, lngDDItem As Long Dim oRng As Range For lngIndex = ActiveDocument.FormFields.Count To 1 Step -1 Set oFF = ActiveDocument.FormFields(lngIndex) Select Case oFF.Type Case 83 ReDim arrVals(1 To oFF.DropDown.ListEntries.Count) For lngDDItem = 1 To oFF.DropDown.ListEntries.Count arrVals(lngDDItem) = oFF.DropDown.ListEntries(lngDDItem).Name Next lngDDItem strText = oFF.Result Set oRng = oFF.Range oFF.Delete Set oCC = ActiveDocument.ContentControls.Add(wdContentControlDropdownList, oRng) oCC.DropdownListEntries.Add oCC.PlaceholderText, vbNullString For lngDDItem = 1 To UBound(arrVals) oCC.DropdownListEntries.Add arrVals(lngDDItem), arrVals(lngDDItem) If oCC.DropdownListEntries(oCC.DropdownListEntries.Count).Value = strText Then oCC.DropdownListEntries(oCC.DropdownListEntries.Count).Select End If Next lngDDItem Case 71 bVal = oFF.CheckBox.Value Set oRng = oFF.Range oFF.Delete Set oCC = ActiveDocument.ContentControls.Add(wdContentControlCheckBox, oRng) oCC.Checked = bVal Case 70 strText = oFF.Result Set oRng = oFF.Range oFF.Delete Set oCC = ActiveDocument.ContentControls.Add(wdContentControlText, oRng) oCC.Range.Text = strText
End Select
Next lbl_Exit: Exit Sub
End Sub
参考链接: https://answers.microsoft.com/en-us/msoffice/forum/msoffice_word-mso_winother/convert-legacy-form-fields-to-content-controls/67150be6-e67b-4d60-a85e-d2ff40603619