セルの背景色および文字色の16進数を取得(CSS用に)
CSSで文字色や背景色の指定を行う際は、RGB値や16進数で色を指定することになるかと思います。
p {
color: #2F4F4F; ←こーゆうヤツ
}
色のRGB値や16進数は、色見本を一覧表にしているHPなどで調べるか、ペイントの色の編集などで調べられますが、ちょっとだけ手間です。
なので、エクセルの背景色と文字色から色の16進数を吸い取る簡単なマクロを作ってみました。
まず、エクセルで背景色と文字色のイメージを確認します。マクロで色を吸い取るのは1セル分だけですが、1セルだけではイメージがつかみにくいので、ドバーっと背景色を塗りつぶして文字を撒き散らしましょう。
背景色と文字色のイメージが確認できたら、どこでもいいので1セルを選択してマクロを実行します。背景色または文字色のどちらから色を吸い取るか選択したら、メッセージボックスにRGB値と16進数が表示され、さらに16進数がクリップボードに転送されます。
あとは、CSSにそのままペーストするだけです。
p {
color: #CC3399;
background-color: #FFFF99;
}
電卓でも16進数変換できるじゃん、とか言わないでね( ・∇・)あくまでもVBAの勉強なのですよ☆
Sub 背景色および文字色の16進数を取得()
'CSS用にアクティブセル背景色および文字色から16進数を取得します
'Hex関数で取得した値はBGRの順なので並び替えが必要(CSSはRGBの順)
Dim mb As Integer
Dim cc As Long
Dim hx As String
Dim bl As String
Dim gr As String
Dim re As String
Dim V As String
Dim blue As Integer
Dim green As Integer
Dim red As Integer
Dim myLib As Object
Set myLib = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
mb = MsgBox("OK:背景色を取得" & vbCrLf & "キャンセル:文字色を取得", vbOKCancel)
If mb = 1 Then
cc = ActiveCell.Interior.Color
Else
cc = ActiveCell.Font.Color
End If
hx = Right("00000" & Hex(cc), 6)
bl = Mid(hx, 1, 2)
gr = Mid(hx, 3, 2)
re = Mid(hx, 5, 2)
V = re & gr & bl
blue = CInt("&H" & bl)
green = CInt("&H" & gr)
red = CInt("&H" & re)
MsgBox "RGB値:" & red & "," & green & "," & blue & vbCrLf & "16進数:" & V
myLib.SetText V '変数の値をDataObjectに格納する
myLib.PutInClipboard 'DataObjectのデータをクリップボードに格納する
MsgBox "16進数:" & V & vbCrLf & "をクリップボードに転送しました!"
End Sub
※SubからEnd Subまでをコピーし、標準モジュール等に貼り付けて使用して下さい。なお、マクロで実行した処理は「元に戻す」ことができません。実行前に一旦保存しやり直しのできる状態にしておいて下さい。標準モジュールにコードを貼り付けてマクロを使用する方法はこちら。