pywin32・win32com.clientを使って、Excelのシートを複数選択するサンプルコードをご紹介しています。
Excelを操作する外部ライブラリ「xlwings」でも、同様の操作が可能だろうと考える方がいらっしゃるかもしれません。
残念ながら、xlwingsに用意されているSheetオブジェクトでは、複数シートを選択はできません。
Excel VBAのWorksheet.Selectメソッドのように、引数Replaceを指定できるようにはなっていないためです。
xlwingsの_xlwindows.pyモジュールのSheetクラスで、select()メソッドは以下のように定義されています。
def select(self):
return self.xl.Select()
Sheet.select()に引数を指定すると……
試しに、2枚以上ワークシートの存在するブックがアクティブな状態で以下のコードを実行すると、
import xlwings as xwbk = xw.books.active
bk.sheets[0].select()
bk.sheets[1].select(True)
「bk.sheets[1].select(True)」の行で、例外「TypeError: Sheet.select() takes 1 positional argument but 2 were given」が発生します。
Book.apiを使って複数シートを選択する
もちろん、Bookオブジェクトのapiプロパティを経由してやれば、pywin32・win32com.clientを使う場合と同じような以下のコードで複数のシートを選択できます。
bk = xw.books.active
bk.api.Worksheets(1).Select()bk.api.Worksheets(2).Select(Replace=False)
最終更新日時:2023-06-01 13:44
Home » Python » xlwingsの使い方 » xlwingsのSheetオブジェクトでは複数シートを選択できない