今開いているエクセルファイルに文字を書き込みしたいんだけど、
xlwingsを使って出来ないのかな?
なるほど…。
アクティブなワークシートへの書き込みをしたいということですね!
では今回は、「xlwingsを使ってアクティブシートを取得して書き込みする方法」
をできるだけわかりやすく解説いたします。
また、「別のシートをアクティブにする方法」も解説いたしますので、
ぜひ最後まで読んでいってください。
【著者情報】
Python歴3年。
入社2年目の春に先輩が突然トンズラし、業務を半分肩代わりするハメに…。
今までの1.5倍の仕事をこなせるはずもなく、苦しむ毎日。
業務効率化を模索中にPythonと出合う。
業務とPythonの相性が良く、2倍以上の効率化を実現。現在も効率化を進行中。
xlwingsでアクティブシートを取得するには
「sheets.active」を使います。まずは実行見本をどうぞ。
実行見本
全コード
ひとまず全コードを網羅します。解説は後ほど行います。
import xlwings
workbook = xlwings.books.active
worksheet = workbook.sheets.active
worksheet['A1'].value = 'utatane'
worksheet = workbook.sheets.active
事前準備
- xlwingsのインストール
エクセルファイルを実際に操作するには、「xlwings」のインストールが必要になります。
xlwingsのインストール方法
xlwingsを初めて使用する場合は、下記コードを入力・実行して、インストールしてください。
pip install xlwings
※xlwingsを使用したことがある場合は、このインストール作業は不要です。
インストール方法詳細やインストールができない場合の対処法、
基本的な使い方などは下記記事をご参考ください。
解説
※わかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。
インポート
import xlwings
「xlwings」を使用するには「インポート」が必要です。
まずは上記一文を記述して、xlwingsのインポートを完了させましょう。
アクティブブックの取得
workbook = xlwings.books.active
上記一文にて、アクティブブックを取得することができます。
アクティブブックの取得詳細は下記記事をご参考ください。
アクティブシートの取得
worksheet = workbook.sheets.active
ここからが本題です。
上記一文を記述することで、アクティブシートを取得できます。
<テンプレ>
【 変数 = workbook.sheets.active 】
左辺の「変数」について、今回はわかりやすく「worksheet」という名前にしましたが、何でも構いません。
しかしながら、一部使えない名前があります。
詳細は下記記事をご参考ください。
セルへの書き込み
最後に下記一文にて、取得したアクティブシートの「A1」セルに「utatane」と書き込みをしています。
worksheet['A1'].value = 'utatane'
▼実行前
では、実行してみましょう。
アクティブシートに「utatane」が書き込みされました。
値を書き込む方法の詳細は、別の記事で解説しておりますのでご参考ください。
アクティブシートを変更する方法
アクティブシートを「Sheet2」から「Sheet3」に変更したい場合もあるかと思います。
そんな時は、下記コードを実行してみてくだい。
import xlwings
workbook = xlwings.books.active
workbook.sheets['Sheet3'].activate()
worksheet = workbook.sheets.active
worksheet['A1'].value = 'utatane'
4行目が追加されています。
workbook.sheets['Sheet3'].activate()
上記一文にて、「Sheet3」をアクティブシートに変更しています。
<テンプレ>
【 ブックが入った変数.sheets[‘アクティブにしたいシート名‘].activate() 】
あとは前項の通り書き込みを指定するだけです。
実行してみましょう。
「Sheet3」がアクティブとなり、A1に「utatane」が書き込みされました。
うまく動作しない時
エラーが出る
‘NoneType’ object has no attribute ‘books’
エクセルブックやエクセルファイルを開いていないのに、ブックやファイルを取得しようとした場合に出るエラーです。
事前に対象のファイルを開くように指定するなど、構文を見直してみましょう。
○○ is not defined
今まで出てきていない変数などを処理しようとした時に出るエラーです。
変数名などが間違っていないかチェックしましょう。
詳しい解説は、下記記事をご参考ください。
その他のエラー
その他のエラーが出た場合は、エラー文をコピーしてNETで検索してみましょう。
空のブックが生成される・残る
作業環境によっては「空のブック(Book1)」が生成されたり、残ってしまう場合があります。
このまま作業を続けると、空のブックがどんどん増えていく可能性があるため対処が必要です。
対処法としましては、何か別のエクセルを開いたままにしておきましょう。
そうすることで、空のブックは生成されません。
作業を始める前に、適当なエクセルファイルをひとつ開いておくことをおすすめします。
最後に
xlwingsでアクティブシートを取得する方法を解説いたしました。
当ブログでは、xlwingsやopenpyxlなど、Pythonに関する情報を配信しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。
挫折せずにPythonを独学で学習する方法は特におすすめです。
最後までお読みいただき、ありがとうございました。がんばってください!