HTML Color Chart
A number of people that sit around me need to see several colors on web pages at the same time to see which ones look best next to each other. And because every monitor affects the color in its own special way, a generated chart seemed to work best. This quick and dirty macro did exactly what we needed and only took 30 minutes to write (then I tweaked and made pretty for a couple days!). After I was all finished they said, “but how can I tell how it looks against my colored backgrounds?” See the chooser box on the right generated by the ‘ChoosertheSecond’ module.
This example displays the use of an array (ColChoice and DecChoice), and three nested For...Next statements, UBound and LBound. And a bunch of crazy stuff in HTML.
Option Explicit
Public ColChoice As Variant, ThrdTier, RowPos As Integer
Public BackCol, ForeColor, FirsTier, SecTier, f1STpACK, s2NDpACK, t3RDpACK, POS
Public firstDec, secDec, thirdDec, DecChoice, CompleteY, QuoTe As String
Public Input_Dir As String
Sub MakeHTMcolors()
ColChoice = Array("00", "33", "55", "66", "77", "99", "AA", "CC", "DD", "EE", "FF")
DecChoice = Array("000", "051", "085", "102", "119", "153", "170", "204", "221", "238", "255")
QuoTe = Chr(34)
POS = 0
Input_Dir = InputBox("Input the path where you want to put the " _
& "Color Charts HTML" & Chr(13) & Chr(13) & _
"i.e.:Windows- C:\EXCEL, H:\DATA\STUFF, J:\Asset Management", "Get Directory", _
"C:\TEMP")
If Input_Dir = "" Then Exit Sub
If Right(Input_Dir, 1) = "\" Then
Input_Dir = Input_Dir
Else
Input_Dir = Input_Dir & "\"
End If
Open Input_Dir & "ColorThing.htm" For Output As #1
Print #1, "<HTML>"
Print #1, "<HEAD>"
Print #1, "<TITLE>HTML Color Chart</TITLE>"
Print #1, "<style>"
Print #1, "<!--"
Print #1, "BODY { FONT-SIZE: small; FONT-FAMILY: Arial,sans serif; }"
Print #1, "TD { FONT-SIZE: 9pt; }"
Print #1, "-->"
Print #1, "</style>"
Print #1, "</HEAD>"
Print #1, "<BODY>"
Print #1, "<h1>Color Chart</h1>"
Print #1, "<TABLE border=" & Chr(34) & "0" & Chr(34) & ">"
For ForeColor = LBound(ColChoice) To UBound(ColChoice) Step 1
Print #1, "</TR>"
FirsTier = ColChoice(ForeColor)
firstDec = DecChoice(ForeColor)
For s2NDpACK = LBound(ColChoice) To UBound(ColChoice) Step 1
SecTier = ColChoice(s2NDpACK)
secDec = DecChoice(s2NDpACK)
Print #1, "<TD> <!-- inside table -->"
Print #1, "<TABLE border=" & Chr(34) & "0" & Chr(34) & _
" cellpadding=" & QuoTe & "0" & QuoTe & " cellspacing=" _
& QuoTe & "1" & QuoTe & ">"
For t3RDpACK = LBound(ColChoice) To UBound(ColChoice) Step 1
ThrdTier = ColChoice(t3RDpACK)
thirdDec = DecChoice(t3RDpACK)
CompleteY = FirsTier & SecTier & ThrdTier
Select Case SecTier
Case "00", "11", "22", "33", "44", "55", "66", "77", "88", "99"
Print #1, "<TR><TD bgcolor=rgb(" & firstDec & "," & secDec & "," _
& thirdDec & ") align=center><B><FONT COLOR=" & Chr(34) _
& "#FFFFFF" & Chr(34) & "><nobr>" & FirsTier & SecTier & ThrdTier _
& "</nobr></B><BR>" & firstDec & "," & secDec & "," & thirdDec & "</FONT></TD></TR>"
Case Else
Print #1, "<TR><TD bgcolor=rgb(" & firstDec & "," & secDec & "," _
& thirdDec & ") align=center><B>" & FirsTier _
& SecTier & ThrdTier & "</B><BR><nobr>" & firstDec & "," & secDec & "," _
& thirdDec & "</nobr></TD></TR>"
End Select
POS = POS + 1
Next
Print #1, "</TABLE></TD>"
If CompleteY = "00FFFF" Then
ChooserTheSecond
End If
Next
Next
Print #1, "</TR>"
Print #1, "</TABLE>"
Print #1, "<P>" & POS & " colors displayed on chart. "
Print #1, "<P>Color selection chart generated from " & _
ThisWorkbook.Path & "\" & ThisWorkbook.Name & " on " _
& Application.Text(Now(), "dd mmmm, yyyy HH:mm:ss") & " using Excel vers. " _
& Application.Version & ". See the <A HREF=http://www.barasch.com/excel/xlcolor.htm>Excel VBA</A> code?"
Print #1, "<P>See also a similar chart with characters colored at " _
& "<A HREF=colorfonts.htm>Characters</A>."
Print #1, "</BODY></HTML>"
Close #1
MakeFontColor
MsgBox "Done with Fonts & Cells on " & Input_Dir, 64, "Make list..."
End Sub
Sub MakeFontColor()
ColChoice = Array("00", "33", "55", "66", "77", "99", _
"AA", "CC", "DD", "EE", "FF")
DecChoice = Array("000", "051", "085", "102", "119", _
"153", "170", "204", "221", "238", "255")
POS = 0
Open Input_Dir & "ColorFonts.htm" For Output As #1
Print #1, "<HTML>" & vbCrLf & "<HEAD>"
Print #1, "<TITLE>HTML Font Color Chart</TITLE>"
Print #1, "<style>"
Print #1, "<!--"
Print #1, "BODY { FONT-SIZE: small; FONT-FAMILY: Arial,sans serif; }"
Print #1, "TD { FONT-SIZE: 9pt; }"
Print #1, "-->"
Print #1, "</style>" & vbCrLf & "</HEAD>"
Print #1, "<BODY bgcolor=" & Chr(34) & "#FFFFFF" & Chr(34) & ">"
Print #1, "<h1>Font Color Chart</h1>"
Print #1, "<TABLE border=" & Chr(34) & "0" & Chr(34) & ">"
For ForeColor = LBound(ColChoice) To UBound(ColChoice) Step 1
Print #1, "</TR>"
FirsTier = ColChoice(ForeColor)
firstDec = DecChoice(ForeColor)
For s2NDpACK = LBound(ColChoice) To UBound(ColChoice) Step 1
SecTier = ColChoice(s2NDpACK)
secDec = DecChoice(s2NDpACK)
Print #1, "<TD> <!-- inside table -->"
Print #1, "<TABLE border=" & Chr(34) & "0" & Chr(34) & ">"
For t3RDpACK = LBound(ColChoice) To UBound(ColChoice) Step 1
ThrdTier = ColChoice(t3RDpACK)
thirdDec = DecChoice(t3RDpACK)
CompleteY = FirsTier & SecTier & ThrdTier
Print #1, "<TR><TD align=" & Chr(34) & "center" & Chr(34) & _
"><FONT COLOR=" & Chr(34) & FirsTier & SecTier _
& ThrdTier & Chr(34) & ">" & FirsTier & SecTier _
& ThrdTier & "<BR>" & firstDec & "," & secDec _
& "," & thirdDec & "</FONT></TD></TR>"
POS = POS + 1
Next
Print #1, "</TABLE></TD>"
If CompleteY = "00FFFF" Then
ChooserTheSecond
End If
Next
Next
Print #1, "</TR>"
Print #1, "</TABLE>"
Print #1, "<P>" & POS & " colors displayed on chart. "
Print #1, "<P>Color selection chart generated from " & _
ThisWorkbook.Path & "\" & ThisWorkbook.Name & " on " _
& Application.Text(Now(), "dd mmmm, yyyy HH:mm:ss") _
& " using Excel vers. " & Application.Version _
& ". See the <A HREF=http://www.barasch.com/excel/xlcolor.htm>Excel VBA</A> code?"
Print #1, "<P>See also a similar chart with <A HREF=colorthing.htm>colored cells</A>."
Print #1, "</BODY>" & vbCrLf & "</HTML>"
Close #1
End Sub
Sub ChooserTheSecond()
Dim ChChoice, FirstHex, SecHex, ThrHex, ComplStrg, Forge, Sorge, Thorg
ChChoice = Array("00", "33", "55", "66", "77", "99", _
"AA", "CC", "DD", "EE", "FF")
Print #1, "<TD valign=top width=25%>"
Print #1, "Choose your background color from the following 1,331 browser-friendly hues.<P>"
Print #1, "<CENTER><FORM>"
Print #1, "<SELECT Size=5 name=clr onChange=" & Chr(34) & _
"document.bgColor=this.options[this.selectedIndex].value" _
& Chr(34) & ">"
For Forge = LBound(ChChoice) To UBound(ChChoice) Step 1
FirstHex = ChChoice(Forge)
For Sorge = LBound(ChChoice) To UBound(ChChoice) Step 1
SecHex = ChChoice(Sorge)
For Thorg = LBound(ChChoice) To UBound(ChChoice) Step 1
ThrHex = ChChoice(Thorg)
ComplStrg = FirstHex & SecHex & ThrHex
If ComplStrg = "AA7733" Then
Print #1, "<OPTION VALUE=" & Chr(34) & ComplStrg & Chr(34) & " SELECTED>" & ComplStrg
Else
Print #1, "<OPTION VALUE=" & Chr(34) & ComplStrg & Chr(34) & ">" & ComplStrg
End If
Next
Next
Next
Print #1, "</SELECT>"
Print #1, "</FORM></CENTER>"
Print #1, "<P><B>Note: </B>Once you have chosen an initial color, you may scroll up and down with your keypad."
Print #1, "</TD>"
End Sub
Since I did the original 256 color chart in 2000, new browsers can handle an almost infinite number of colors. The chart was expanded to 1,331 colors by adding several more choices to the arrays.
|