エクセルファイルの体裁を整えるために、
全シートのアクティブセルをA1にしたい…。
openpyxlの編集ついでにできる方法は無いの?
簡単にできる方法をご紹介いたします!
アクティブセルの位置が違うだけで、
体裁が全然違いますもんね!
openpyxlで全シートのアクティブセルをA1に変更する方法を、
Python歴3年の私ができるだけわかりやすく解説し、解決に導きます。
openpyxlで全シートのアクティブセルをA1に変更するには
実行見本
全コード
ひとまず全コードを網羅します。解説は後ほど行います。
import openpyxl
wb = openpyxl.load_workbook('input.xlsx')
for ws in wb:
ws.sheet_view.selection[0].activeCellId = None
ws.sheet_view.selection[0].sqref = 'A1'
wb.save('input.xlsx')
for ws in wb:
ws.sheet_view.selection[0].activeCellId = None
ws.sheet_view.selection[0].sqref = 'A1'
事前準備
- openpyxlのインストール
既存のエクセルファイルを編集するには「openpyxl」のインストールが必要です。
openpyxlのインストール方法
openpyxlを初めて使用する場合は、下記コードを入力・実行して、インストールしてください。
pip install openpyxl
※openpyxlを使用したことがある場合は、このインストール作業は不要です。
openpyxlの基礎解説
既存ファイルを開いて保存する方法などの操作の基本解説は、下記記事で行っております。
ご参考ください。
解説
※わかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。
for ws in wb:
ws.sheet_view.selection[0].activeCellId = None
ws.sheet_view.selection[0].sqref = 'A1'
上記を記述することで、全シートのアクティブセルをA1に変更することができます。
【1行目】
「wb」はワークブックが入った変数です。
「wb」の中から、1つ目のシート(Sheet1)を変数「ws」に入れます。
【2行目・3行目】
ws(Sheet1)のアクティブセルをA1に設定します。
アクティブセルを変更する際の詳しい解説は、下記記事をご参考ください。
for文についても下記記事でわかりやすく解説しております。
wbの中のシートが無くなるまでこれを繰り返します。
(シートが10枚あっても、100枚あっても大丈夫です)
最終的には、全シートのアクティブセルをA1に変更できるというわけです。
うまく動作しない時
エラーが出る
No such file or directory: ○○
これは、読み込むファイルやフォルダが見つからないというエラーです。
読み込むファイルのファイル名と構文のファイル名が一致しているか確認しましょう。
詳しい解説は、下記記事をご参考ください。
Permission denied: ○○
操作しようとしているファイルにアクセスできないというエラーです。
「ファイルを開いている状態なので編集できない」と言っていることが多いので、開いていれば閉じて再度トライしましょう。
詳しい解説は、下記記事をご参考ください。
○○ is not defined
今まで出てきていない変数などを処理しようとした時に出るエラーです。
変数名などが間違っていないかチェックしましょう。
詳しい解説は、下記記事をご参考ください。
その他のエラー
その他のエラーが出た場合は、エラー文をコピーしてNETで検索してみましょう。
最後に
openpyxlで全シートのアクティブセルをA1に変更する方法を解説いたしました。
ほんの少しのことですが、体裁が全然違いますので、ぜひご活用ください。
当ブログでは、Pythonに関する情報を配信しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。
最後までお読みいただき、ありがとうございました。がんばってください!