openpyxlでアクティブシートを変更する方法[グループ化回避も]

スポンサードリンク
sample Python
過去の自分
過去の自分

openpyxlで編集したエクセルを提出したら、

「Sheet2じゃなくてSheet1がアクティブになってたから、
まとめるデータを間違えたんだけど」って怒られた…。

openpyxlでアクティブシートを変更する方法は無いの?

今の自分
今の自分

あります!

グループ化を回避する方法も紹介しますよ!

openpyxlでアクティブシートを変更する方法を、
Python歴3年の私ができるだけわかりやすく解説し、解決に導きます。

スポンサードリンク

openpyxlでアクティブシートを変更するには

active」と「sheet_view」を使います。まずは実行見本をどうぞ。

スポンサードリンク

実行見本

スポンサードリンク

全コード

ひとまず全コードを網羅します。解説は後ほど行います。

import openpyxl

wb = openpyxl.load_workbook('input.xlsx')

ws1 = wb['Sheet1']
ws2 = wb['Sheet2']

ws1.sheet_view.tabSelected = False

wb.active = ws2

wb.save('input.xlsx')

ws1.sheet_view.tabSelected = False
wb.active = ws2

スポンサードリンク

事前準備

  • openpyxlのインストール

既存のエクセルファイルを編集するには「openpyxl」のインストールが必要です。

openpyxlのインストール方法

openpyxlを初めて使用する場合は、下記コードを入力・実行して、インストールしてください。

pip install openpyxl

※openpyxlを使用したことがある場合は、このインストール作業は不要です。

スポンサードリンク

解説

アクティブシートを変更

>>06.ws2 = wb[‘Sheet2’]
>>10.wb.active = ws2

6行目の一文で「Sheet2」を変数に入れます。
その後、10行目で「Sheet2」をアクティブにしています。

これで「Sheet2」をアクティブにすることができます。

【 ワークシート変数 = ブック変数[‘アクティブにしたいシート名‘] 】
【 ブック変数.active = ワークシート変数

しかしながら、これだけでは不完全なのです。
下図が実行見本です。

たしかに「Sheet2」はアクティブになったのですが、
「Sheet1」も選択されて、グループ化された状態になっています。

これでは受け取った人が気付かず編集したりすると、「Sheet1・2」が連動して修正されてしまうなど、別の問題が起きます。

では、このグループ化を回避するにはどうしたらいいでしょうか。

グループ化を回避

グループ化を回避するには、もともとアクティブになっていた「Sheet1」の選択を解除する必要があります。

>>05.ws1 = wb[‘Sheet1’]
>>08.ws1.sheet_view.tabSelected = False

5行目で「Sheet1」を変数に入れ、8行目でその「Sheet1」の選択を解除しています。

これで、グループ化がなくなり、「Sheet2」のみがアクティブになりました。お疲れ様でした。

【 ワークシート変数 = ブック変数[‘もともとアクティブになっていたシート名‘] 】
【 ワークシート変数.sheet_view.tabSelected = False 】

関連記事として、「アクティブセルをA1に変更する方法」というものがございます。
これで更に体裁が整いますので、よろしければご覧ください。

その他の解説

既存ファイルを開いて保存する方法などの操作の基本解説は、下記記事で行っております。
ご参考ください。

スポンサードリンク

うまく動作しない時

エラーが出る

No such file or directory: ○○

これは、読み込むファイルやフォルダが見つからないというエラーです。
読み込むファイルのファイル名と構文のファイル名が一致しているか確認しましょう。

詳しい解説は、下記記事をご参考ください。

Permission denied: ○○

操作しようとしているファイルにアクセスできないというエラーです。
ファイルを開いている状態なので編集できない」と言っていることが多いので、開いていれば閉じて再度トライしましょう。

詳しい解説は、下記記事をご参考ください。

Worksheet ○○ does not exist

「指定したシートがありません」というエラーです。
指定のシート名が間違っていないか、「sheet1」など先頭が小文字になっていないか確認しましょう。

詳しい解説は、下記記事をご参考ください。

○○ is not defined

今まで出てきていない変数などを処理しようとした時に出るエラーです。
変数名などが間違っていないかチェックしましょう。

詳しい解説は、下記記事をご参考ください。

その他のエラー

その他のエラーが出た場合は、エラー文をコピーしてNETで検索してみましょう。

スポンサードリンク

まとめ

openpyxlでアクティブシートを変更する方法を解説いたしました。

active」と「sheet_view」をセットで覚えておきましょう。

最後までお読みいただき、ありがとうございました。がんばってください!

タイトルとURLをコピーしました