最近Excelを使ってツールを作ってそれを納品するということがあったので、改めてこれを考えてみた。
前提として、Excel使用者が作業を効率化するなどの目的で、Excelを一種の業務効率化アプリとすることが目的です。
実行環境が整えられないので、ウェブ系のツールはNG、使用者がプログラマではないのでコマンドライン系もNGです。
考えられる候補は以下の3つだと思います。
主観に基づく比較表
項目 | Python in Excel | Officeスクリプト | VBA |
---|---|---|---|
安定感 | × | ◎ | ◎ |
理解しやすさ | Pythonがわかれば概ね◯ | JS、TS、GASに慣れていれば概ね◯ | 個人的に× |
プログラミング幸福度 | ◯ | ◯ | × |
共有性 | PF差異があるので× | プラン差異があるので× | セキュリティによるので△ |
テストしやすさ | × | ◯ | × |
それぞれの説明
Python in Excel
詳しくは上記に記載していますが、以下の点から実用には耐えないと判断しています。
- プログラムを書き換えるとランタイムの再起動が必要(「実行時刻のリセット」が必要)
- 2024年11月現在Windows版のExcelでしか使えない
- 情報が少ない
- ボタン等のイベントにフックできない
Officeスクリプト
この存在は随分前から知っていて、自分の業務効率化でいくつか書いたことがありました。
OfficeスクリプトはTypeScriptがベースの言語なので、言ってしまえばJavaScript感覚で書けます。
Google App Scriptを書いていると感覚的に使えるのではと思うところがありますし、個人的には学習コストは低いと思います。
ただ、これも色々な制約があって、結局選択肢からは外しました。
- 365個人プランでは使えない(2024年11月現在Insiderプログラムに参加しないと使えない)
- 組織アカウントに紐づいているので、クラウドに接続されていることが前提
- スクリプトは専用のJSONベースのファイルにOneDrive内に保存される(
%ONEDRIVE%\Office Scripts\*.osts
) - 同じ組織内であれば、警告ダイアログに同意すれば動かせるが、他社のアカウント内で動かせるのかがわからない
これらが解決できると非常に強力なんですけどね。
個人的にはこれの今後の発展に注目したいです。
VBA
結局VBAという話になってしまうのですが、あまり扱った経験がないのと、色々と使いにくいところが多すぎるという点で、一番最初に選択肢から外していました。
ネットで同じ意見の人を探すとどれも共感するものばかりです。
- エディタが微妙
- 書いている途中で、自動で整形、警告でるのやめてほしい
- 言語として辛い部分がある
- 横展しづらい
- REST形式なのかRPC形式なのか・・・
- 関数と同じ識別子に代入すると戻り値になるのか・・・
-
"
を文字列として記述する際に""""
としなければならないのがつらい(ダブルクォーテーションのエスケープ文字はダブルクォーテーション)
- マクロは別のPCで動かす際に無効化されることがあり、ちゃんとした署名をいれる必要がある
- メンテナンスなどを考えると非常にコストが掛かるので、Excelのセキュリティレベルを下げてもらうということをお願いしなければならない
まとめ
結局アドインとかも試してみたのですが、ピンとくるものがなくVBAを選択するしかなかったわけですが、最終的には関数でそれっぽいのを作って共有する形になりました。
現状はVBAしか選択肢がないという結果になりました。
Google Spreadsheetの場合、Google App ScriptをJavaScriptのように書ける他、CLAPS(Command Line Apps Script Projects)を使うことで、手元の環境で、TypeScriptで書いたものをGASにアップロードできるという仕組みがあったりして、ありがたかったりします。
Excelで、JavaScriptライクな言語でプログラミングできる日が来ることを望みます。