#1
|
|||
|
|||
Populating multiple Content Controls after mail merge
Hi guys, first time poster!
So I'm helping a colleague optimise some electronic forms. Basically it's currently setup as this:
This means despite there being say 20 bids for each trustee to score, the final step generates 1 line of data, which he'd then copy and paste into another worksheet. All his calculation formulas therefore use direct cell references, and thus mistakes were made and it was impossible to read the formulas and find the errors. So here's my plan: at step 3, add a bid reference number as a content control for each bid. During import, the VBA code in my excel will look for the reference number field, and start a new line of data. The problem is:
Thank you in advance! |
#2
|
||||
|
||||
Quote:
__________________
Graham Mayor - MS MVP (Word) (2002-2019) Visit my web site for more programming tips and ready made processes www.gmayor.com |
#3
|
|||
|
|||
Quote:
Unfortunately after downloading and playing with it I've noticed that it outputs individual word documents from the merge, and not a single document with all the records, which is what I need. The good news is, after looking around for what can be done with VBA, I've come up with a solution that works for my purpose, and I'll share it just in case it can help with anyone else: Since merged documents have individual sections, with their independent headers and footers, I know I can populate the reference number in the header of each bid. The next problem is I didn't know how to reference the content controls per section, but turns out it's easily done, by using Section.Range.ContentControls. So the solution is: - Put the reference number merge field inside the header of your pre-merged word template. - Use the following VBA code: Code:
For Each Sec In ActiveDocument.Sections For Each CCtl In Sec.Range.ContentControls If CCtl.Title = "ref_no" Then CCtl.Range.Text = Sec.Headers(wdHeaderFooterPrimary).Range.Text End If Next Next The limitation is probably obvious, but this approach basically means you can't have anything else within your header. Although at the same time you can probably do something clever like using a delimiter to truncate unwanted header content, whilst putting an invisible (white on white, font size 1) merge field into the header as the very first thing. Hope it's helpful to anyone else! |
#4
|
|||
|
|||
You could put your header merge field in a richtext CC titled "Ref"
Code:
Sub ScratchMacro() 'A basic Word macro coded by Greg Maxey Dim oSec As Section Dim oCC As ContentControl, oCC2 As ContentControl For Each oSec In ActiveDocument.Sections Set oCC = oSec.Headers(wdHeaderFooterPrimary).Range.ContentControls(1) For Each oCC2 In oSec.Range.ContentControls If oCC2.Title = "ref_no" Then oCC2.Range.Text = oCC.Range.Text 'If there is only one "ref_no" CC per section then: 'Exit For End If Next Next lbl_Exit: Exit Sub End Sub |
Thread Tools | |
Display Modes | |
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Populating Tables with data when available only - Using Mail merge | stevejohhnym | Mail Merge | 1 | 06-25-2019 12:50 AM |
Delete or merge Content controls with the same name | sylvio | Word VBA | 9 | 08-30-2017 01:46 AM |
Macro to save docx to doc that checks compatibility and converts content controls to static content. | staicumihai | Word VBA | 4 | 10-12-2016 08:23 PM |
Inserting multiple content controls for a date | jeffreybrown | Word | 2 | 05-09-2016 05:53 PM |
Mail Merge Field Not Populating | JennEx | Mail Merge | 3 | 05-10-2015 09:30 PM |