「python openpyxl シート選択」
という検索キーワードでアクセスがありました。
xlsxファイル等を読み書きするPythonの外部ライブラリ「OpenPyXL」を使って、Excelのワークシートを選択するには、どのようなコードを書けばいいのか探していた方による検索です。
Excelで作られたxlsxファイルを操作するライブラリOpenPyXLで、このような処理は少々面倒です。
OpenPyXLでワークシートを選択するサンプル
Cドライブtempフォルダーに、複数のワークシートが存在するorg.xlsxファイルを用意しておいてから以下のスクリプトを実行してください。
bk = xl.load_workbook(r'C:\temp\org.xlsx')
for ws in bk.worksheets:
ws.sheet_view.tabSelected = False
bk.active = bk.worksheets[0]
bk.save(r'C:\temp\new.xlsx')先頭のワークシートが選択されたnew.xlsxファイルが作成されます。
OpenPyXLでのシート選択は面倒
Excel VBAやwin32com.clientの場合、ExcelライブラリのWorksheetオブジェクトに用意されている、選択を行うSelectメソッドやアクティブにするActivateメソッドを使います。OpenPyXLにも同じような名前のメソッドがあると考えてしまうかもしれませんが、違います。
OpenPyXLの場合、Workbookオブジェクトのactive属性に、そのブックに含まれるWorksheetオブジェクトを設定することで、ワークシートをアクティブにできます。
bk.active = bk.worksheets[0]
代入文右辺の「bk.worksheets」は、Worksheetオブジェクトを要素として含むリストを返しますから、
bk.active = bk.worksheets[-1]
とすれば、末尾のワークシートがアクティブになります。
シートのグループ化防止のために
このWorkbook.active属性への代入だけで済めばイイのですが、元々選択されていたシートの選択状態は解除されないために、複数のシートが選択された状態、シートがグループ化された状態になってしまう場合があります。
それを防ぐために、「bk.active = bk.worksheets[0]」でワークシートをアクティブにする前に、for文
for ws in bk.worksheets:
ws.sheet_view.tabSelected = False
で、全ワークシートのSheetView.tabSelected属性にFalseを指定して、選択状態を解除しています。
最終更新日時:2023-05-07 16:25
- Newer:数字を含むかVBAで判定する
- Older:pywin32・win32comでPowerPointを終了する
Home » Python » OpenPyXLの使い方 » OpenPyXLでシートを1枚だけ選択する