1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

身の回りの困りごとを楽しく解決! by Works Human IntelligenceAdvent Calendar 2023

Day 23

Excelシートのセルの色を取得したり塗ったり #blueprism #Excel

Last updated at Posted at 2023-12-23

やりたいこと

「赤色に塗ったセルの値をフィルタ」とか、Excelのセル色指定で何かをさせたい的なことはよくあります。
なんかもう塗り絵ソフトかなってくらいセルをカラフルに塗ってくれてる帳票とかありますよね……。
なので、Excelの指定セルの色を取得したり、指定色で塗ったりするアクションがほしいなと思って作りました。

と思ったら塗る方はもうあった

DXにありました。
Function for MS Excel VBO - Extended - 2.3.3
この中にある「Set Background Color」アクションがそれです。
ログインすればVBOをダウンロードできます。
(アカウントはBPユーザでなくても、メアドだけあれば作れます)

取得する方だけ作ります

さきに挙げた「Set Background Color」を改造して作ります。

  1. 「Set Background Color」をコピペして、名前を「Get Background Color」とします。
  2. アクションはこんな感じ。
    せっかくなのでRGB値とカラーコードも出せるようにします。
    RGBは数値で、カラーコードはテキストです。
    VBO1.png
    入力引数の妥当性チェックはめんどくさいので省略。「セル番地が正しく指定されているか」とかは別アクションで作ればいいんじゃない?
  3. コードはこれ。
    入力引数は
     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シートを用意して
Excel_before.png
C3の色を取得して、A2に紫色を塗ってみます。
実行結果はこれ。
ちゃんと色を取得できています。RGB(255,192,203)はピンク色です。
VBO2.png
そしてExcelシートのA2セルにも紫色が塗られました。
Excel_after.png

ちなみにセル色じゃなくて文字色を取得したいときは

上に書いたコードステージのコードの「Interior.Color」を「Font.Color」にしたらいけます。

終わりです

数年前にBlue Prismを使い始めた頃は「機能がないから一から自作」率が高かったのですが、いまはDXを探すとお目当てのアクションやそれに近いものが既存であったり、以前からDXに掲載されているVBOでもバージョンアップしていたりします。
DXはマメにチェックしておいて損はないかも。

追記:取得する方もあった

そんなことを書いていたらDXに取得する方も掲載されました。
MS Excel Booster
マジでDXはマメに見ておくのがいいです。
惜しむらくはDXの検索がクソだってこと。探しづら……。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?