#1
|
|||
|
|||
Replace checkbox symbol with check box content control
Hi all,
I have a mail merge field in my Word 2010 document that contains a check box control that is checked or not depending on the content from the input list. {IF NEW = "NEW" "☒" "☐"} where those boxes are actually check box controls However, after the mail merge is complete, the check box control is replaced with a symbol for the checked or unchecked box, as appropriate. As a result, one can no longer switch from checked to unchecked in the final document as you would for a check box control. I am looking for a simple way to find the checked or unchecked symbol in the output document and replace it with a check box document control in the appropriate state. I'm not big on programming, but if you could point me in the right direction, I'll try my best. I have played around with VB Macros in the past (very amateur), so I tried that again and got this far as a "proof of concept": Code:
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 Code:
Selection.Range.ContentControls.Add (wdContentControlCheckBox) |
#2
|
|||
|
|||
Code:
Sub Checkbox() Dim oRng As Word.Range Dim oCC As ContentControl 'ChrW(9744) is unchecked box; 9746 is checked box Set oRng = ActiveDocument.Range Selection.Find.ClearFormatting With oRng.Find .Text = ChrW(9744) .Forward = True .Wrap = wdFindStop .Format = False .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False While .Execute Set oCC = ActiveDocument.ContentControls.Add(wdContentControlCheckBox, oRng) oCC.Checked = False oRng.Collapse wdCollapseEnd Wend End With Set oRng = ActiveDocument.Range Selection.Find.ClearFormatting With oRng.Find .Text = ChrW(9744) While .Execute Set oCC = ActiveDocument.ContentControls.Add(wdContentControlCheckBox, oRng) oCC.Checked = True oRng.Collapse wdCollapseEnd Wend End With lbl_Exit: Exit Sub End Sub |
#3
|
|||
|
|||
Hi gmaxey. Thanks for the code. Definitely looks like it's going down the path I need to travel, but I get a runtime error 4198 on the following:
Code:
Set oCC = ActiveDocument.ContentControls.Add(wdContentControlCheckBox, oRng) There's a lot of Google hits on runtime error 4198 but this one might be useful? http://support.microsoft.com/en-us/kb/275558 I'm trying to incorporate that into your script, but, as I said, I haven't used VBA in about 10 years, and even then I was barely scratching the surface. |
#4
|
|||
|
|||
I have attached a sample document that I am running the script on, in case that helps.
|
#5
|
|||
|
|||
Try this:
Code:
Option Explicit Sub Checkbox() Dim oRng As Word.Range Dim oCC As ContentControl 'ChrW(9744) is unchecked box; 9746 is checked box Set oRng = ActiveDocument.Range Selection.Find.ClearFormatting With oRng.Find .Text = ChrW(9744) .Forward = True .Wrap = wdFindStop .Format = False .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False While .Execute Set oCC = ActiveDocument.ContentControls.Add(wdContentControlCheckBox, oRng) oCC.Checked = False oRng.Collapse wdCollapseEnd oRng.Move wdCharacter, 2 Wend End With Set oRng = ActiveDocument.Range Selection.Find.ClearFormatting With oRng.Find .Text = ChrW(9746) While .Execute Set oCC = ActiveDocument.ContentControls.Add(wdContentControlCheckBox, oRng) oCC.Checked = True oRng.Collapse wdCollapseEnd oRng.Move wdCharacter, 2 Wend End With lbl_Exit: Exit Sub End Sub |
#6
|
|||
|
|||
Not sure what happened. When I first tried it I got the same error message on the same line. That came up a few times afterwards, after trying a few little things like making sure the document was saved, etc.
Then, I noticed one time that despite the error message, it seemed to have worked! So, I restarted the mail merge process again, created a new document, and ran the script through. No run time error! I have no idea why it went away, but it seems to be working! Many thanks Greg. |
Tags |
check box, mail merge, word 2010 |
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
how to find and replace a symbol with another symbol | wondermuse | Word | 5 | 10-09-2014 06:30 AM |
Deleting a table from a content control -- preserving the content control | BrainSlugs83 | Word Tables | 8 | 11-14-2013 03:06 AM |
Word2010 check boxes and plain text content control boxes in same table | fcsungard | Word | 5 | 06-01-2012 01:16 AM |
Check box symbol | jdthelen | Word | 1 | 09-07-2009 01:43 PM |
Excel ->VB code for Checkbox (control toolbox) | kirkstyle | Excel | 0 | 08-16-2006 04:17 PM |