xlwingsを使ってセルの塗りつぶし色・背景色を操作するサンプルスクリプトをご紹介しました。
xlwingsのRange.colorプロパティの戻り値は、R・G・Bの値を要素として持つタプルとして返されるわけですが、そのソースコードを確認したら、やっぱりこう処理するのだなぁと思ったので記事にしておきます。
Range.colorプロパティを取得する処理の中では、utils.pyモジュールに定義されている以下のint_to_rgb()関数が呼ばれています。
def int_to_rgb(number):
number = int(number)
r = number % 256
g = (number // 256) % 256
b = (number // (256 * 256)) % 256
return r, g, b
このサイト『インストラクターのネタ帳』でも、VBAで各種オブジェクトに用意されているColorプロパティで取得できるLong型の数値からRGB値を取得する、以下のようなユーザー定義関数をご紹介しています。
Function ToRGB(ByVal ColorValue As Long) As String
Dim r As Byte, g As Byte, b As Byter = ColorValue \ 256 ^ 0 Mod 256
ToRGB = r & "," & g & "," & b
g = ColorValue \ 256 ^ 1 Mod 256
b = ColorValue \ 256 ^ 2 Mod 256
End Function
拙著『VBAユーザーのためのPython超入門』の[2-8. VBAと異なる演算子]でも解説しているとおり、割り算の余りを求める演算子がVBAでは「Mod」Pythonは「%」、商のみを求める演算子がVBAでは「\」でPythonは「//」といった違いがあります。
そのため24ビットの整数値からRGB値を取得するコードはもちろん異なりますが、行っている演算は同じことをやっています。
- 『VBAユーザーのためのPython超入門』出ました。
- 『VBAユーザーのためのPython超入門』に登場するVBA関数一覧
- 『VBAユーザーのためのPython超入門』に登場するPythonの関数・メソッド一覧
最終更新日時:2023-04-29 13:38
- Newer:『Excel VBAユーザーのためのWord VBA入門(1)』が2023年4月の月替わりセールで半額の590円に
- Older:『Excel VBAユーザーのためのOpenPyXL入門:Pythonの定番ライブラリの特徴をちゃんと知ろう』を出しました。
Home » Python » xlwingsの使い方 » RGB値のタプルに変換するint_to_rgb関数がxlwings.utilsモジュールにある