Excel VBAユーザーの方が、Excelそのものを操作する便利なライブラリ「xlwings」を使い始めたときに、注意が必要なプロパティがいくつかあります。
Rangeオブジェクトのshapeプロパティがその1つです。
Excel VBAをご存じで、pandas等を使ったことがない場合、Range.shapeは図形を表すShapeオブジェクトを取得するためのプロパティだと誤解してしまうような気がします。
xlwingsのRange.shapeの戻り値を確認する
Range.shapeの戻り値がShapeオブジェクトではないことを確認しましょう。
Excelを起動して、セルを選択しておいてから以下のコードを実行してください。
bk = xw.books.active
rng = bk.selection
print(rng.shape)
セルが1つだけ選択された状態であれば、
(1, 1)
と出力されます。
また、2行×3列のセル範囲を選択しておいて実行したときには
(2, 3)
と出力されます。
xlwingsのRange.shapeの戻り値はタプル
xlwingsのRange.shapeプロパティの戻り値は、上記コードの実行結果からわかるとおりタプルです。
セル範囲が、何行×何列かを示すタプルです。
Shapeオブジェクトではありません。
現在のPython人気を支える外部ライブラリの1つpandasに、DataFrame.shapeプロパティがあります。
このDataFrame.shapeの戻り値は、DataFrameが何行×何列かを示すタプルが戻り値です。
この仕様にxlwingsのRange.shapeも準拠して、セル範囲が何行×何列かを示すタプルが戻り値となっています。
最終更新日時:2023-07-26 11:53
- Newer:Excel VBAのParent.Closeとは
- Older:VBAでシート全体をAutoFitするには
Home » Python » xlwingsの使い方 » xlwingsのRange.shapeの戻り値はShapeではなくタプル