[xlwingsで数式を値貼り付け]1行でできる!業務効率UP

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

xlwingsでエクセルファイルを編集しているんだけど、
数式が入っているから行を削除するとエラーが起こる…。
数式を値に変換する方法は無いの?

今の自分
今の自分

あります!
では今回は、「xlwingsで数式を値貼り付けする方法」
できるだけわかりやすく解説いたします。

スポンサードリンク

xlwingsで数式を値貼り付けするには

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

実行見本

全コード

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

import xlwings

workbook = xlwings.books.active
worksheet = workbook.sheets.active

worksheet['A1'].value = worksheet['A1'].value
worksheet['A1'].value = worksheet['A1'].value

xlwingsの処理は、予想以上に時間がかかることがあります。
プログラムの最後に「print(‘実行完了’)」などを追記し、完了したのを確認してから結果を見ましょう。

事前準備

  • xlwingsのインストール

エクセルファイルを実際に操作するには、「xlwings」のインストールが必要になります。

xlwingsのインストール方法

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

pip install xlwings

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

インストール方法詳細やインストールができない場合の対処法、
基本的な使い方などは下記記事をご参考ください。

解説

※わかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。

インポート~シートの取得

import xlwings

workbook = xlwings.books.active
worksheet = workbook.sheets.active

上記コードにて、「xlwingsのインポート」「アクティブブック・アクティブシートの取得」をしています。
詳細は「アクティブシートの取得」の記事をご覧ください。

セルの数式を値貼り付け

worksheet['A1'].value = worksheet['A1'].value

上記一文にて、セルに入った数式を値貼り付けすることができます。
今回は、「セルA1」を値貼り付けした例です。

コードの解説ですが、まず取得したシートが入った変数を記述し、[]内に値貼り付けするセルを指定します。
続けて「.value」を記述して完了です。
コードの左辺と右辺は全く同じものとなります。イコールを記述したら、同じコードを書きましょう。

<テンプレ>
【 シートが入った変数[‘値貼り付けしたいセル名‘].value = 左辺と同じコードを書く 】

セル指定のしかた

前項の見本ではセル[‘A1’]という指定のしかたをしました。
その他の指定方法を見ていきましょう。

番号で指定

worksheet[0, 0].value = worksheet[0, 0].value

上記コードは、見本と同じ「A1」セルを指定した例です。
[0, 0]はA1セルを指定したことになります。
詳細は書き込みの記事をご参考ください。

変数で指定

前項の応用です。
あらかじめ変数に数値を入れ、セル指定をその変数で行うというものです。

row = 1
col = 2

worksheet[row, col].value = worksheet[row, col].value

上記の例では、「セルC2」を指定したことになります。

スポンサードリンク

うまく動作しない時

見本

エラーが出る

‘NoneType’ object has no attribute ‘books’

エクセルブックやエクセルファイルを開いていないのに、ブックやファイルを取得しようとした場合に出るエラーです。
事前に対象のファイルを開くように指定するなど、構文を見直してみましょう。

○○ is not defined

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

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

その他のエラー

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

空のブックが生成される・残る

作業環境によっては「空のブック(Book1)」が生成されたり、残ってしまう場合があります。
このまま作業を続けると、空のブックがどんどん増えていく可能性があるため対処が必要です。

対処法としましては、何か別のエクセルを開いたままにしておきましょう。
そうすることで、空のブックは生成されません。

作業を始める前に、適当なエクセルファイルをひとつ開いておくことをおすすめします。

いつまでたっても実行されない

エラーは出ていないのに、いつまでたっても実行されない場合は、実行内容がエクセルに届いていない可能性があります。
「books.active」「sheets.active」を使用していて、エクセルファイルが最小化されていると、実行内容がエクセルに届かない場合があります。(もう1度実行すると、同じ内容が2回実行される)

エクセルは最小化せず、コードエディタとエクセルを並べて表示させた状態で実行するとうまくいきやすいです。

スポンサードリンク

最後に

xlwingsでセルに入った数式を値貼り付けする方法を解説いたしました。

当ブログでは、xlwingsやopenpyxlなど、Pythonに関する情報を配信しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。

挫折せずにPythonを独学で学習する方法は特におすすめです。

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

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