C# automation : coloring text with specific rgb or html color

F

Frenchy

Hi all,

I'm trying to color some text with colors that aren't defined in Word (ex
blue, dark-green,...)

To see how Word handles it I recorded a small macro, I selected a text and
colored It. Here's what It looks like;

Selection.Font.Color = 14897469

I'm trying and trying to create this number from a rgb or html color but I
can't find any function in Word or C# wich convert my colors in the Word colo
format :(

Any idea?
 
J

Jay Freedman

Frenchy said:
Hi all,

I'm trying to color some text with colors that aren't defined in Word
(ex blue, dark-green,...)

To see how Word handles it I recorded a small macro, I selected a
text and colored It. Here's what It looks like;

Selection.Font.Color = 14897469

I'm trying and trying to create this number from a rgb or html color
but I can't find any function in Word or C# wich convert my colors in
the Word colo format :(

Any idea?

Hi Frenchy,

Given the R, G, and B values, the formula for the Color number is

((B * 256) + G) * 256 + R

Be sure to do this arithmetic with 16-bit or 32-bit variables (Long data
type in VBA) to prevent overflow.
 
F

Frenchy

Thank you so much.

And do you know how I could transform a "html" color(ex:FF0000) to this
number?

If it isn't directly possible, I'm sure It's possible to transform it in rgb
then in "Word Color" format.
 
J

Jay Freedman

Hi Frenchy,

See
http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/colors/colors.asp
for the whole nine yards.

The short version is that an HTML color number is really a string of three
2-digit hex numbers, which represent red, green, and blue in that order:
#RRGGBB.

Here's some example code to do the conversion:

Sub ColorDemo()
Dim HTMLcolor As String
Dim R As Long, G As Long, B As Long
Dim ColorNum As Long

' For example, "coral" is #FF7F50
HTMLcolor = "FF7F50"

' extract each pair of characters from the
' string, prefix it with &H, and convert it
' to a Long value
R = CLng("&H" & Mid$(HTMLcolor, 1, 2))
G = CLng("&H" & Mid$(HTMLcolor, 3, 2))
B = CLng("&H" & Mid$(HTMLcolor, 5, 2))

ColorNum = ((B * 256) + G) * 256 + R

Selection.Font.Color = ColorNum
End Sub
 
F

Frenchy

Thanks, you're the pro in coloring ;)

I'll try to transform it in c# tomorow, but It seems easy with your comments
 

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