Home » Python » xlwingsの使い方 » xlwingsで図形の色を変更する

動作検証バージョン:Windows 11 Home + Python 3.10.6(64-bit) + xlwings 0.30.9 + 64bit Excel(バージョン2309 ビルド16811.20004 クイック実行)

Excel自体を操作するPythonの外部ライブラリ「xlwings」にも、図形を操作するためのShapeクラスが用意されています。

ただし、書式(見た目)を操作するメソッドやプロパティは実装されていません。
そのため、図形の色を変更するなどの見た目を操作するためには、Shape.apiプロパティを経由して、Excel VBAのShapeオブジェクトを操作する必要があります。

xlwingsで図形の色を変更するサンプルスクリプト

四角形や楕円などの図形が1つ存在するワークシートがアクティブな状態で以下のスクリプトを実行すると、図形の色が緑色に変化します。

import xlwings as xw
from xlwings.utils import rgb_to_int

sht = xw.sheets.active
shp = sht.shapes[0]

shp.api.Fill.ForeColor.RGB = rgb_to_int((0, 255, 0))

Shape.apiプロパティ下の

shp.api.Fill.ForeColor.RGB

の部分は、拙著『理解するExcel VBA/図形操作の基本』の「3-2. FillFormatは塗りつぶし書式を表す」で解説しているのと同じオブジェクトモデルです。

rgb_to_int()関数でタプルから24ビットカラー値を取得できる

RGB値を設定する右辺は、Excel VBAならばVBAのRGB関数を使いますが、上記のサンプルでは、xlwingsのrgb_to_int()関数を使用しています。

こちらのページ「Python×Excel xlwingsで 図形を取得, 挿入する方法」では、Pythonのシフト演算子を使った以下のような関数を自作してらっしゃいますが、

def RGB(red, green, blue):
    return red + (green << 8) + (blue << 16)

現在のxlwingsには、RGB値を整数にする以下のようなrgb_to_int()関数が、utilsモジュールに定義されています。

def rgb_to_int(rgb):
    return rgb[0] + (rgb[1] * 256) + (rgb[2] * 256 * 256)

先述のサンプルスクリプトでは、このrgb_to_int()関数を使うため、以下の形でインポートを行っています。

from xlwings.utils import rgb_to_int
[スポンサードリンク]

Home » Python » xlwingsの使い方 » xlwingsで図形の色を変更する

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

検索


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

.