なんとかしてVBAをブラウザやスマホで使えないか

みんな大好き(?)VBA.ときにはブラウザやスマホでも実行したいときってありますよね?(無い?)

実際問題,デスクトップ版のMicrosoft Excelが,他のOffice互換ソフト (WPS Office,LibreOffice)やオンライン版/スマホ版のExcelで代替できない大きな理由はVBAがあることだったりします. (Google App Scriptに移行するにしても,手間だし)

というわけで,どうにかしてブラウザやスマホVBA(Excel VBA)を使えないのか調べてみました.

結論

結論を言うと,VBAのランタイムはMicrosoftがソースを公開しないで保持しているので,完全な互換にはMicrosoftのランタイムを使うしかないです.

さらに,VBAでは,Scripting Runtimeをはじめとする参照設定を使うことは多く,Windows APIを使うこともあるので,WindowsExcelVBAが,MacExcelで動作しないことも多々あります. Microsoftの公式ですらそうなので,他のプラットフォームでは絶望的です

Excel Onlineでも,VBAはWebでは動かせません!とMicrosoftは言っています. マクロ入りブックのマクロ以外の部分(つまりシート)を編集できるだけです.

それでもちょっとでもいいからVBA(またはExcel上のプログラム)を動かしたいっていう人のために記事を続けます. オンラインで動けばスマホからも使えるので,オンラインでの実行だけを考えることにします.

オンラインでの実行

その1: VB.NET オンラインコンパイラ

VBAは無理でも,VB (.NET) であれば,オンラインで実行できます!

Online PHP/Java/C++... editor and compiler | paiza.IO

...はい.VB.NETじゃしょうがないですね.

他の方法を探すと,下記のような質問を見つけました.

Is there any way to use Macros/VBA code in excel online? I am trying to use VBA code to enable multi-selection columns in Excel, but it stops working when the file is on one drive? - Quora

その2: office.js

VBAExcel Onlineでは使えません.

でも,office.jsは使えます.

office.jsとは,JavaScriptで作るExcelなどOfficeソフトウェアの拡張機能です.デスクトップ版をはじめ,オンライン版やMacExcelなど,クロスプラットホームで動きます.

Excel アドインの概要 - Office Add-ins | Microsoft Docsdocs.microsoft.com

JavaScript API for Office - Office Add-ins | Microsoft Docs

しかし,どのプラットホームでも動くということは,それだけできることに制限が加わるということにつながります.まだ発展途上のこともあり,あまりできることは多くないそうです.

VBAを書き直すにしても相当な手間なので,ちょっと非現実的です.

その3: EASAなるサービス

Quoraの回答で宣伝していたのがEASAという企業向けサービスです.

Video Gallery | EASA

仕組みとしては,サーバ上でExcelスプレッドシートの処理やVBAの実行を行い,ユーザからはWebアプリとして利用できるというものです.

価格とかは見てないですが,企業向けなので...

Excelアプリのようなレガシーの象徴みたいなものでもWebアプリとして使いたいっていう企業の需要があるんですね. それより抜本的にリプレイスしないと,辛いことになる気はしますが...

まとめ

ということで,(幸か不幸か) VBAをオンラインで使うことは無理そうです.

今後に期待できそうなのはoffice.jsでしょうか.時間があれば触ってみたいところです.