Home » Python » xlwingsの使い方 » RGB値のタプルに変換するint_to_rgb関数がxlwings.utilsモジュールにある

RGB値のタプルに変換するint_to_rgb関数がxlwings.utilsモジュールにある

動作検証バージョン:Windows 11 Home(64-bit)+ Python 3.10.6(64-bit) + xlwings 0.29.1

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 Byte

 r = ColorValue \ 256 ^ 0 Mod 256
 g = ColorValue \ 256 ^ 1 Mod 256
 b = ColorValue \ 256 ^ 2 Mod 256

 ToRGB = r & "," & g & "," & b
End Function

拙著『VBAユーザーのためのPython超入門』の[2-8. VBAと異なる演算子]でも解説しているとおり、割り算の余りを求める演算子がVBAでは「Mod」Pythonは「%」、商のみを求める演算子がVBAでは「\」でPythonは「//」といった違いがあります。

そのため24ビットの整数値からRGB値を取得するコードはもちろん異なりますが、行っている演算は同じことをやっています。

最終更新日時:2023-04-29 13:38

[スポンサードリンク]

Home » Python » xlwingsの使い方 » RGB値のタプルに変換するint_to_rgb関数がxlwings.utilsモジュールにある

「xlwingsの使い方」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.