Excelそのものを操作する、Pythonの外部ライブラリ「xlwings」の場合、AppオブジェクトとBookオブジェクトにselectionプロパティが用意されています。
App.selectionも、Book.selectionも、セルが選択されているときにはRangeを、セル以外のものが選択されている場合にはNoneを返します。
Book.selectionを確認しよう
拙著『VBAユーザーのためのPython超入門』でも多用しているIDLEのShellウィンドウで挙動を確認しましょう。
Excelが起動し、セルが選択されている状態で、以下のコードを実行してください。
>>>
>>> bk = xw.books.active
>>> obj = bk.selection
>>> type(obj)
以下のように出力され、Rangeオブジェクトが取得できていることを確認できます。
<class 'xlwings.main.Range'>
セルではない、たとえば画像が選択されている状態で再度
>>> obj = bk.selection
>>> type(obj)
を実行すると、
<class 'NoneType'>
と出力されます。
App.selectionも確認しよう
以下のようなコードで、App.selectionの挙動を確認できます。
>>> obj = app.selection
>>> type(obj)
結果は、Book.selectionの場合と同じく、セルが選択されていれば
<class 'xlwings.main.Range'>
セルではないものが選択されていれば、
<class 'NoneType'>
と出力されます。
selectionプロパティの定義
selectionプロパティは、main.pyモジュールのAppクラスに、
@property
def selection(self):
return Range(impl=self.impl.selection) if self.impl.selection else None
と定義され、Bookクラスでは、
@property
def selection(self):
return Range(impl=self.app.selection.impl) if self.app.selection else None
と、App.selectionプロパティを呼ぶように定義されています。
また、_xlwintdows.pyモジュールのAppクラスでは、以下のように定義されています。
@property
def selection(self):
try:
_ = (
self.xl.Selection.Address
)
return Range(xl=self.xl.Selection)
except pywintypes.com_error:
return None
Excel VBAのSelectionは
ちなみにExcel VBAのSelectionプロパティはApplicationとWindowに用意されており、
戻り値はいずれも「As Object」と定義されています。
最終更新日時:2023-06-18 05:03
Home » Python » xlwingsの使い方 » xlwingsのselectionはAppとBookにあり、戻り値はRange