自動化ツールを作っています。Kaiです。
ご相談のとき「マクロで作れますか」「Pythonのほうがいいですか」と聞かれることがあります。
結論から書くと、**どちらが優れているかではなく、
受け取る側の環境で決まります**。性能で選ぶ話ではありません。
判断に使っている3つの質問を、そのまま出します。
3つの質問で、だいたい決まる
質問1:作業はExcelの中だけで終わりますか
同じブックの中で、集計して・並べ替えて・シートを作る。
外に出ないなら、Excelマクロ(VBA)が素直です。
逆に、Webサイトから取ってくる、メールを読む、PDFを開く、
別のソフトに渡す——外に出た時点でPythonのほうが向きます。
質問2:誰が、いつ動かしますか
人がExcelを開いてボタンを押すならVBA。
決まった時刻に、誰も開いていない状態で動かすならPythonです。
VBAは「Excelが開いていること」が前提なので、
無人で毎朝7時に動かす用途には向きません。
質問3:誰のパソコンで動かしますか
会社の規定でソフトをインストールできないPCなら、VBA一択です。
Excelさえ入っていれば動くので。
自分のPCやサーバーで回せるなら、Pythonの選択肢が開きます。
3つの道具の比較
Googleスプレッドシートをお使いなら、GAS(Google Apps Script)も入ります。
Excelマクロ(VBA) はExcelの中で完結する作業に向き、外部サイト・メール・無人実行が苦手。
Python は外部とのやりとり・無人の定時実行・大量データに向き、実行環境の用意が要ります。
GAS はスプレッドシートなら無人実行までできますが、大量データと実行時間に上限があります。
「Pythonのほうが速い」「VBAは古い」といった話もありますが、
実務で効くのはそこではありません。
毎朝のコピペを無くすのが目的なら、
1秒で終わるか3秒で終わるかに違いはないからです。
判断の順番
私が見ている順番はこうです。
1. インストールの制限があるか → あればVBA(またはGAS)
2. Excelの外に出るか → 出るならPython
3. 無人で動かすか → 動かすならPythonかGAS
4. 上のどれでもない → 受け取る方が扱いやすいほうを選ぶ
4番まで来たら、性能ではなく
「あとで誰が触るか」で決めます。
Excelしか使わない部署に納品するなら、
中身がPythonである必然性はありません。
よくある誤解
「Pythonのほうが高機能だから、そちらでお願いしたい」
やりたいことがExcelの中で完結しているなら、
Pythonにすることで環境の用意という手間が増えるだけです。
「マクロは壊れやすいと聞いた」
壊れやすさは道具ではなく、作り方で決まります。
例外を洗っていないVBAも、洗っていないPythonも同じように止まります。
「どちらで作ったかで料金が変わりますか」
変わりません。料金を決めるのは、手順の数と例外の数です。
このあたりは費用の記事に書いたとおりです。
私がご相談を受けるとき
まず「その結果を、誰がどこで使いますか」から伺います。
作る側の好みで決めると、
納品後に誰も触れないものが残ります。それが一番困ります。
なので、選び方の理由も一緒にお伝えします。
「Excelマクロで作ります。理由は、この作業がブックの中で完結していて、
ご担当者がExcelだけで完結できるほうが後で楽だからです」という形です。
おわりに
道具は目的ではないので、
「どちらで作るか」はこちらで判断してお伝えします。
決めていただく必要はありません。
やりたいことと、使う環境だけ教えてください。