Excel自体を操作するPythonの外部ライブラリ「xlwings」のRangeクラスには、
Excel VBAのRange.Endプロパティに相当するend()メソッドも実装されています。
Excel VBAのRange.EndプロパティにはXlDirection列挙型に定義されている定数を指定しますが、
xlwingsのRange.end()メソッドの引数には、どの方向の終端セルを取得するかを指示する文字列
- down
- left
- right
- up
を指定するのが基本です。
この方向を、1文字で指定することも可能です。
Range.end()に方向を1文字で指定したサンプル
A1:E5セルの全セルに何らかのデータが入力されているワークシートがアクティブな状態で、以下のスクリプトを実行してみてください。
sht = xw.sheets.active
rng = sht.range('C3')
print(rng.end('l').address)
print(rng.end('r').address)
print(rng.end('u').address)
C3セルの、下・左・右・上の終端セルのセル番地が、
$C$5
$A$3
$E$3
$C$1
と出力されます。
方向用の辞書が定義されている
xlwingsのRange.end()メソッドは、_xlwindows.pyモジュールのRangeクラスで、Excel VBAのRange.Endプロパティを以下のように呼んでいます。
def end(self, direction):
direction = directions_s2i.get(direction, direction)
return Range(xl=self.xl.End(direction))
「down」「left」「right」「up」「d」「l」「r」「u」は、_xlwindows.pyモジュールに以下のように辞書(dict)として定義されています。
directions_s2i = {
"d": -4121,
"down": -4121,
"l": -4159,
"left": -4159,
"r": -4161,
"right": -4161,
"u": -4162,
"up": -4162,
}
逆に、数値から文字列については、
directions_i2s = {-4121: "down", -4159: "left", -4161: "right", -4162: "up"}
と定義されています。
最終更新日時:2023-06-06 11:50
- Newer:pywin32・win32com.clientを使ってExcelのテキストボックスの枠線を操作する
- Older:Excel VBAでアクティブセルと1つ下・右隣のセルと結合する-Range.Resizeプロパティ
Home » Python » xlwingsの使い方 » xlwingsのRange.end()は1文字で方向を指定できる