動作検証バージョン:Windows 10 + Python 3.7.3 + xlwings 0.15.5 + Excel 1905
Excel VBAのRangeオブジェクトとは異なり、OpenPyXLのCellオブジェクトが、同じセルを参照している場合にis演算子で比較できることを確認しました。
xlwingsのRangeオブジェクトの場合、どうなのかも気になります。
[スポンサードリンク]
xlwingsのRangeをis演算子で比較する
xlwingsの場合、同じセルを参照していてもFalseだろうと思いつつ、以下のようなスクリプトを作成して実行しました。
import xlwings
rng_2 = sht.range('A1')
print(rng_1 is rng_2)
wb = xlwings.Book('C:\\temp\\foo.xlsx')
sht = wb.sheets[0]
rng_2 = sht.range('A1')
print(rng_1 is rng_2)
結果は、予想通りFalseです。
xlwingsのRangeは取得するたびに識別値が異なる
Pythonのid()関数で識別値を確認すれば、
もちろん別です。
ちなみに、変数ではなくid()関数の引数にRangeを取得するコードを指定しても、
上図のとおり、実行するたびに別の識別値となる(!)ことがわかります。
Excel VBAのObjPtr関数の場合
この挙動はExcel VBAとは異なります。
Excel VBAの場合、同じRangeオブジェクトを取得するコードを、ObjPtr関数の引数に続けて指定すれば、
同じ値が返されます。
最終更新日時:2019-07-03 13:55
[スポンサードリンク]
Home » Python » xlwingsの使い方 » xlwingsのRangeは同じセルを参照していてもis演算子でTrueにならない