Using mail merge to distinguish colours in Word

B

ben_johnson1991

I'm using a mail merge from Excel. I dont think this is possible but its
worth a try.
I want colours that are listened in excel to be able to represent a colour
of a text box in word.

example.
The title could be "Tree" and in the colour associated in the excel sheet
would be "Green", so in word when the mail merge is run to put "Tree" into a
text box and i would like somehow for word to recognise "green" and then make
that text box background colour green.

Any help would be great, even if its that it's not possible.
Thanks :)
 
D

Doug Robbins - Word MVP

It is not possible with mailmerge. It can probably be done by the use of a
macro that automates Word from Excel or vice versa.

--
Hope this helps.

Please reply to the newsgroup unless you wish to avail yourself of my
services on a paid consulting basis.

Doug Robbins - Word MVP, originally posted via msnews.microsoft.com
 
P

Peter Jamieson

I do not think you will be able to colour the textboxes using the
out-of-the-box merge facilities.

One way would be to post-process the output document using VBA, e.g.

Sub colourmytextboxes()
Dim shp As Word.Shape
With ActiveDocument
For Each shp In .Shapes
' only process Shapes that may have text..
If Not (shp.TextFrame Is Nothing) Then
' ..and do have text
If shp.TextFrame.HasText Then
Select Case UCase(Left(shp.TextFrame.TextRange.Text,
Len(shp.TextFrame.TextRange.Text) - 1))
Case "RED"
' or use RGB values
shp.Fill.ForeColor = vbRed
Case "GREEN"
shp.Fill.ForeColor = vbGreen
Case "BLUE"
shp.Fill.ForeColor = vbBlue
' etc.
Case Else
' do nothing
End Select
End If
End If
Next
End With
End Sub

If you are merging directly to email, you would have to do that using
the Word Mailmerge Events rather than postprocessing.


Peter Jamieson

http://tips.pjmsn.me.uk
 
M

macropod

hi ben,

The best you can do with field coding is to approximate what you're after. For example, you could use field coding like:
{IF{MERGEFIELD Colour}= "Blue" "Water"}
{IF{MERGEFIELD Colour}= "Red" "Fire"}
{IF{MERGEFIELD Colour}= "Green" "Grass"}
and colour/highlight the 'Water', 'Fire' and 'Grass' strings with the colour/highlight you want. This will colour/highlight those
text strings, but nothing more. However, these strings can also span multiple paragraphs (not just a single word as I have used) and
could include tables with the cell shading you're after.
 
P

Peter Jamieson

However, these strings can also span multiple paragraphs (not just a
single word as I have used) and could include tables with the cell shading
you're after.

FWIW they can also include /inline/ textboxes but AFAICS you will then also
always get the "Word cannot update locked fields" problem when merging.

Peter Jamieson

macropod said:
hi ben,

The best you can do with field coding is to approximate what you're after.
For example, you could use field coding like:
{IF{MERGEFIELD Colour}= "Blue" "Water"}
{IF{MERGEFIELD Colour}= "Red" "Fire"}
{IF{MERGEFIELD Colour}= "Green" "Grass"}
and colour/highlight the 'Water', 'Fire' and 'Grass' strings with the
colour/highlight you want. This will colour/highlight those text strings,
but nothing more. However, these strings can also span multiple paragraphs
(not just a single word as I have used) and could include tables with the
cell shading you're after.

--
Cheers
macropod
[Microsoft MVP - Word]


ben_johnson1991 said:
I'm using a mail merge from Excel. I dont think this is possible but its
worth a try.
I want colours that are listened in excel to be able to represent a
colour
of a text box in word.

example.
The title could be "Tree" and in the colour associated in the excel sheet
would be "Green", so in word when the mail merge is run to put "Tree"
into a
text box and i would like somehow for word to recognise "green" and then
make
that text box background colour green.

Any help would be great, even if its that it's not possible.
Thanks :)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top