#1
|
|||
|
|||
Loop and Update Content Controls with value
Hello,
I have several content controls with the same name within a document and in the headers and footers. I'd like to loop through all controls with the name "AccountName" and update the content with a specific value. Not certain how to do this for more than one content control, and also, it looks as though it is different in footers, headers and the main document. can you please advise ? Thanks |
#2
|
||||
|
||||
A loop would not be required if you linked them all to the same xml node. However, the code to loop would look something like this
Code:
Sub CCLoader() Dim aCC As ContentControl For Each aCC In ActiveDocument.ContentControls If aCC.Title = "AccountName" Then aCC.Range.Text = "hi mum" End If Next End Sub
__________________
Andrew Lockton Chrysalis Design, Melbourne Australia |
#3
|
||||
|
||||
For linking them see http://gregmaxey.com/word_tip_pages/...ntent_Controls
__________________
Graham Mayor - MS MVP (Word) (2002-2019) Visit my web site for more programming tips and ready made processes www.gmayor.com |
#4
|
|||
|
|||
Thank you, Andrew. That works for the main Document, but doesn't work in Headers and Footers : (
|
#5
|
||||
|
||||
In that case
Try
Code:
Sub CCLoader() Dim aCC As ContentControl, aRng As Range For Each aRng In ActiveDocument.StoryRanges For Each aCC In aRng.ContentControls If aCC.Title = "aaa" Then aCC.Range.Text = "hi mum" End If Next aCC Next aRng End Sub
__________________
Andrew Lockton Chrysalis Design, Melbourne Australia |
#6
|
|||
|
|||
Thank you, Andrew - works everywhere except the header.... I haven't tried the footer though.
How is the header differentiated here ? How do we access it for updating ? Thanks! |
#7
|
|||
|
|||
PS -
Each of the controls for "AccountName" are bounding boxes. I ensure they are unlocked: Still no luck with anything in the Page Headers. I do have Initial Page Header set to none, so the page header resides in another section, if that makes a difference. Sub CCLoaderHiMum() Dim aCC As ContentControl, aRng As Range For Each aRng In ActiveDocument.StoryRanges For Each aCC In aRng.ContentControls If aCC.Title = "AccountName" Then aCC.LockContents = False aCC.Range.Text = "hi mum" aCC.Range.Font.ColorIndex = wdBlack aCC.LockContents = True End If Next aCC Next aRng End Sub |
#8
|
||||
|
||||
If the second code sample I provided doesn't catch the CC in a header then I would guess that those CCs may be sitting inside a text box. We would need to see your document to work it out. Post a sample document if you want to resolve this.
Alternatively, explore the earlier suggestion of linking the CCs to an xml node and then change the value of that node.
__________________
Andrew Lockton Chrysalis Design, Melbourne Australia |
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
VBA to set Content controls as non printing | Sammie0Sue | Word VBA | 21 | 01-12-2021 04:44 PM |
VBA for content controls | ciresuark | Word VBA | 1 | 03-10-2015 03:14 PM |
Calculate Age From Content Controls | kintap | Word VBA | 10 | 07-02-2014 09:25 AM |
Windows update loop | franklekens | Windows | 0 | 04-10-2014 11:56 PM |
Content Controls | Sammie0Sue | Word | 6 | 11-06-2013 10:56 PM |