なんとかしてVBAをブラウザやスマホで使えないか
みんな大好き(?)VBA.ときにはブラウザやスマホでも実行したいときってありますよね?(無い?)
実際問題,デスクトップ版のMicrosoft Excelが,他のOffice互換ソフト (WPS Office,LibreOffice)やオンライン版/スマホ版のExcelで代替できない大きな理由はVBAがあることだったりします. (Google App Scriptに移行するにしても,手間だし)
というわけで,どうにかしてブラウザやスマホでVBA(Excel VBA)を使えないのか調べてみました.
結論
結論を言うと,VBAのランタイムはMicrosoftがソースを公開しないで保持しているので,完全な互換にはMicrosoftのランタイムを使うしかないです.
さらに,VBAでは,Scripting Runtimeをはじめとする参照設定を使うことは多く,Windows APIを使うこともあるので,Windows版ExcelのVBAが,Mac版Excelで動作しないことも多々あります. 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じゃしょうがないですね.
他の方法を探すと,下記のような質問を見つけました.
その2: office.js
でも,office.jsは使えます.
office.jsとは,JavaScriptで作るExcelなどOfficeソフトウェアの拡張機能です.デスクトップ版をはじめ,オンライン版やMac版Excelなど,クロスプラットホームで動きます.
Excel アドインの概要 - Office Add-ins | Microsoft Docsdocs.microsoft.com
JavaScript API for Office - Office Add-ins | Microsoft Docs
しかし,どのプラットホームでも動くということは,それだけできることに制限が加わるということにつながります.まだ発展途上のこともあり,あまりできることは多くないそうです.
VBAを書き直すにしても相当な手間なので,ちょっと非現実的です.
その3: EASAなるサービス
Quoraの回答で宣伝していたのがEASAという企業向けサービスです.
仕組みとしては,サーバ上でExcelのスプレッドシートの処理やVBAの実行を行い,ユーザからはWebアプリとして利用できるというものです.
価格とかは見てないですが,企業向けなので...
Excelアプリのようなレガシーの象徴みたいなものでもWebアプリとして使いたいっていう企業の需要があるんですね. それより抜本的にリプレイスしないと,辛いことになる気はしますが...
まとめ
ということで,(幸か不幸か) VBAをオンラインで使うことは無理そうです.
今後に期待できそうなのはoffice.jsでしょうか.時間があれば触ってみたいところです.