2023年8月23日、Microsoft社がExcel上でPythonを実行可能にした「Python in Excel」を発表しました。
ただ、現在はパブリックプレビュー版となっており、Microsoft 365 Insiderプログラムに参加していないと使うことができません。そのため、まだ実際にPytohn in Excelを使うことができないという方も多くいらっしゃるかと思います。
ネット上では、
『Python in Excel』と言われるとVBAと同様に使えそうなイメージです
https://x.com/chichiband/status/1699191739574276281?s=20
「Python in Excel」ってVBAというゴミがPythonというゴミに変わっただけだろ?
https://x.com/LifeViolation/status/1699098098126201247?s=20
「Excel VBAがただ単にPythonで書けるようになるだけでは?」という声をちらほら見かけます。また、わたしの職場でも「Python in Excelになったら何かとめんどくさいVBAから解放されるのか!」と期待を寄せている同僚がおりました・・・。
そこで、今回は、
これについて、詳しく解説したいと思います。
VBAとPython in Excelのちがい
両者の基本的なしくみ
まず、Python in ExcelとVBAの基本的なしくみについて解説します。
VBAは、「.xlsm」形式で保存したExcelファイルに埋め込まれており、VBAコードはExcel内で実行されます。
一方、Python in Excelは、クラウド上で実行されます(参考)。この環境には、「Anaconda」というディストリビューション(ライブラリやツールをまとめたもの)が使われており、データサイエンスや機械学習に適した環境になっています。
VBAでできること
VBAでできることは、以下のような操作になります。
先ほど解説したとおり、VBAはExcelに埋め込まれる形で作成され、VBAコードはExcel内で実行されます。そのため、VBAでは、
- Excelのセル色を変える、セルに値を入力する
- Excelブックやシートを複製する
- Outlookメールの送信
- ローカルファイルの操作
など、Excel全般の操作、ローカルファイルやMicrosoftのアプリケーション(Outlook、Wordなど)の操作、ローカルファイル・フォルダの操作を行うことができます。
Python in Excelでできること
Python in Excelでできることは、以下のような処理になります。
先述のとおり、Python in Excelはクラウド上で実行され、Pythonのライブラリを利用できます。しかし、上記の図を見ると、なんだかデータサイエンス・機械学習の分野に偏っているような感じがしますよね・・・!?
インターネット通信・ローカルファイル操作はできない
Pythonには非常に多くのライブラリがあり、機械学習やデータ分析の他にも、WebスクレイピングやOCR、Web開発など様々なことが行えます。
しかし、Python in Excelは、Microsoft Cloud上のセキュリティで保護されたコンテナーで実行され、Anacondaに含まれているライブラリのみが利用できます(画像参照)。
つまり、Python in Excel上では
- インターネットへのアクセス
- ローカルファイル、フォルダ等の操作
ができません。
以下は、requestsライブラリを使ってYahoo!JAPANにアクセスする例です。このコードをPY関数内に記述し、コードをコミットするとエラーが発生します。
import requests
# GETリクエストを行う
response = requests.get('https://www.yahoo.co.jp/')
# レスポンスのステータスコードを確認する
print(response.status_code) # 200ならば成功
Pythonライブラリの全てが使えるわけではない
また、Anacondaに含まれないライブラリもエラーとなります。
以下は、OCR処理のライブラリをインポートするコードをPY関数に記述し、コミットしたものです。
import pytesseract
ModuleNotFoundErrorが発生しました。pytesseractは、Anacondaに含まれないライブラリです。このように、Anacondaを介して利用できないライブラリをインポートしようとするとエラーになります。
どう使い分ければ良いか
VBAを使うべき場面
- Excel自体に対する操作(セル色を変える、集計、シートのコピー等)
- ローカルファイル、フォルダに対する操作
- Office製品への操作・連携(Excel、Word、PowerPoint、Outlookなど)
など、普段のExcel利用に関する自動化をしたい場合にはVBAが適しています。
Python in Excelを使うべき場面
- Excelのテーブルを元データとしたデータ分析
- Excelのテーブルを元データとした機械学習
- 複雑な数値計算
等、Pythonライブラリを利用したデータ分析・機械学習についてはPython in Excelが適しています。
なお、Python in Excelでは、PY関数が記述されているセル以外のブック内のプロパティにはアクセスできません(参照)。そのため、Excel内の図表や数式、セルなどに対して操作は一切できず、VBAの代役には決してならないことが分かります。
比較表
さいごに、改めてPython in ExcelとVBAの比較を表にまとめます。
項目 | VBA | Python in Excel |
---|---|---|
ローカルファイルの操作 | 〇 | × |
インターネット通信 | 〇 | × |
Excelの操作(セル、シート等) | 〇 | × |
Office(Word,Outlook等)との連携 | 〇 | × |
Pythonライブラリの利用 | × | 〇 |
コード実行 | ローカル | クラウド |
拡張子 | .xlsm | .xlsx、.xlsbなど |
まとめ
今回は、Pytohn in ExcelとVBAは何が違うのかについて解説しました。結論、
という使い分けになるかなと思います。
Python in Excelという名前的に、VBAの代わりになりそうな雰囲気がありますが、VBAの代わりにはなりません!
コメント