Home » Python » OpenPyXLの使い方 » OpenPyXLでシートを選択する

動作検証バージョン:Windows 10 Pro(64-bit)+ Python 3.8.3(32-bit) + OpenPyXL 3.0.7

「python openpyxl シート選択」
という検索キーワードでアクセスがありました。

xlsxファイル等を読み書きするPythonのライブラリOpenPyXLを使って、Excelのワークシートを選択するには、どのようなコードを書けばいいのか探していた方による検索です。

[スポンサードリンク]

Excelそのものを操作する、Excel VBAやwin32com.clientを使ったPythonのコードに比べ、Excelで作られたxlsxファイルを操作するライブラリOpenPyXLで、このような処理は少々面倒です。

OpenPyXLでワークシートを選択するサンプル

Cドライブtempフォルダーに、複数のワークシートが存在するorg.xlsxファイルを用意しておいてから以下のスクリプトを実行してください。

import openpyxl

bk = openpyxl.load_workbook(r'C:\temp\org.xlsx')

# シートの選択状態を解除
for ws in bk.worksheets:
    ws.sheet_view.tabSelected = False
# 末尾のシートをアクティブに設定
bk.active = bk.worksheets[-1]

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[-1]

代入文右辺の「bk.worksheets」は、Worksheetオブジェクトを要素として含むリストを返しますから、
  bk.active = bk.worksheets[0]
とすれば、先頭のワークシートがアクティブになります。

シートのグループ化防止のために

このWorkbook.active属性への代入だけで済めばイイのですが、元々選択されていたシートの選択状態は解除されないために、複数のシートが選択された状態、シートがグループ化された状態になってしまう場合があります。

それを防ぐために、「bk.active = bk.worksheets[-1]」でワークシートをアクティブにする前に、for文
  for ws in bk.worksheets:
      ws.sheet_view.tabSelected = False
で、全ワークシートのworksheet.views.SheetView.tabSelected属性にFalseを指定して、選択状態を解除しています。

最終更新日時:2021-04-08 06:40

[スポンサードリンク]

Home » Python » OpenPyXLの使い方 » OpenPyXLでシートを選択する

TrackBack:0

TrackBack URL

Home » Python » OpenPyXLの使い方 » OpenPyXLでシートを選択する

「OpenPyXLの使い方」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.