我的Word 2010文档中有邮件合并字段,其中包含一个复选框控件,该控件是否已选中,具体取决于输入列表中的内容。
{IF NEW =“NEW”“☒”“☐”}这些框实际上是复选框控件
但是,在邮件合并完成后,复选框控件将替换为已选中或未选中复选框的符号(如果适用)。因此,您无法再像在复选框控件中那样在最终文档中从已选中切换到未选中。
类似的问题是asked here,但尚未解决(一个解决方案的回复对我不起作用)。
我正在寻找一种简单的方法来在输出文档中查找已选中或未选中的符号,并将其替换为处于适当状态的复选框文档控件。
我对编程并不陌生,但如果你能指出我正确的方向,我会尽我所能。我过去曾经玩过VB Macros(非常业余),所以我再试一次,并将其作为“概念证明”:
Sub Checkbox()
' ChrW(9744) is unchecked box; 9746 is checked box
Selection.HomeKey Unit:=wdStory
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = ChrW(9744)
.Replacement.Text = ChrW(9746)
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
Selection.HomeKey Unit:=wdStory
End Sub
我还找到了添加复选框控件的方法:
Selection.Range.ContentControls.Add (wdContentControlCheckBox)
但是我还没想出如何将最后一段代码结合到'替换'行,也不知道如何根据搜索将复选框定义为是否选中。
感谢您的帮助。
答案 0 :(得分:1)
您可以执行以下操作:
new Promise<void>((resolve, reject) => {
someFunc("str1", "str2", resolve, reject);
});
答案 1 :(得分:0)
对于Office 2010,可以使用更高级的复选框控件来支持格式设置。这个代码是:
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
Do
With Selection.Find
.Text = ChrW(9744)
.Forward = True
.Wrap = wdFindStop 'wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
If Selection.Find.Execute = False Then Exit Do
' This adds the checkbox at the selected position
Set f = Selection.Range.ContentControls.Add(wdContentControlCheckBox)
f.SetCheckedSymbol CharacterNumber:=254, Font _
:="Wingdings"
f.SetUncheckedSymbol CharacterNumber:=168, _
Font:="Wingdings"
f.Checked = False' Change this for checked checkboxes
Loop