やりたいこと
「赤色に塗ったセルの値をフィルタ」とか、Excelのセル色指定で何かをさせたい的なことはよくあります。
なんかもう塗り絵ソフトかなってくらいセルをカラフルに塗ってくれてる帳票とかありますよね……。
なので、Excelの指定セルの色を取得したり、指定色で塗ったりするアクションがほしいなと思って作りました。
と思ったら塗る方はもうあった
DXにありました。
Function for MS Excel VBO - Extended - 2.3.3
この中にある「Set Background Color」アクションがそれです。
ログインすればVBOをダウンロードできます。
(アカウントはBPユーザでなくても、メアドだけあれば作れます)
取得する方だけ作ります
さきに挙げた「Set Background Color」を改造して作ります。
- 「Set Background Color」をコピペして、名前を「Get Background Color」とします。
- アクションはこんな感じ。
せっかくなのでRGB値とカラーコードも出せるようにします。
RGBは数値で、カラーコードはテキストです。
入力引数の妥当性チェックはめんどくさいので省略。「セル番地が正しく指定されているか」とかは別アクションで作ればいいんじゃない? - コードはこれ。
入力引数は
Handle、Workbook、Worksheet、CellAddress
出力引数は
bgrvalue、R、G、B(数値)、colorCode(テキスト)
Dim ws As Object
ws = GetWorksheet(Handle, Workbook, Worksheet)
ws.Activate()
bgrValue = ws.Range(CellAddress).Interior.Color
R = bgrValue Mod 256
G = (bgrValue \ 256) Mod 256
B = (bgrValue \ 65536) Mod 256
colorCode = "#" & CInt(R).ToString("X2") & CInt(G).ToString("X2") & CInt(B).ToString("X2")
実行結果
たとえばこんなExcelシートを用意して
C3の色を取得して、A2に紫色を塗ってみます。
実行結果はこれ。
ちゃんと色を取得できています。RGB(255,192,203)はピンク色です。
そしてExcelシートのA2セルにも紫色が塗られました。
ちなみにセル色じゃなくて文字色を取得したいときは
上に書いたコードステージのコードの「Interior.Color」を「Font.Color」にしたらいけます。
終わりです
数年前にBlue Prismを使い始めた頃は「機能がないから一から自作」率が高かったのですが、いまはDXを探すとお目当てのアクションやそれに近いものが既存であったり、以前からDXに掲載されているVBOでもバージョンアップしていたりします。
DXはマメにチェックしておいて損はないかも。
追記:取得する方もあった
そんなことを書いていたらDXに取得する方も掲載されました。
MS Excel Booster
マジでDXはマメに見ておくのがいいです。
惜しむらくはDXの検索がクソだってこと。探しづら……。