Python in ExcelとVBAは何が違うのか・使い分け方を解説【徹底比較】

Excel

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から解放されるのか!」と期待を寄せている同僚がおりました・・・。

そこで、今回は、

本記事のテーマ

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に含まれているライブラリのみが利用できます(画像参照)。

引用:https://support.microsoft.com/ja-jp/office/excel-%E3%81%A7%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF-%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3%E3%81%A8-python-33cc88a4-4a87-485e-9ff9-f35958278327

つまり、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の比較を表にまとめます。

項目VBAPython in Excel
ローカルファイルの操作×
インターネット通信×
Excelの操作(セル、シート等)×
Office(Word,Outlook等)との連携×
Pythonライブラリの利用×
コード実行ローカルクラウド
拡張子.xlsm.xlsx、.xlsbなど

まとめ

今回は、Pytohn in ExcelとVBAは何が違うのかについて解説しました。結論、

結論

・Excel自体を操作したいならVBA、
・Excelのデータをもとにデータ分析がしたいならPython in Excel

という使い分けになるかなと思います。

Python in Excelという名前的に、VBAの代わりになりそうな雰囲気がありますが、VBAの代わりにはなりません!

chaso

文系出身、数字が苦手な平凡主婦。塾講師、大手企業SE、不動産事務、Webライター、結婚後はパートタイムでエンジニアをしています。機械音痴だけど効率化や自動化をこよなく愛しています!お仕事の依頼・ご相談は問い合わせよりお願いいたします♪

chasoをフォローする

コメント

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