VBAの未来
マイクロソフトの悪いところでありますが、いつものように英語版しかなく日本語版がない。それゆえなのか、日本ではあまり取り上げられていないようですが、2020年3月11日、マイクロソフトは次のような重要な宣言を公式に行っています。
「今後は、Visual Basic を言語として進化させる予定はありません。」
「言語の変更を必要とする .NET Core の今後の機能は、Visual Basic ではサポートされない可能性があります。」
あれから時を経て、2022年8月3日、MSはマクロを既定でブロックしました。
MS公式情報「NET 5.0 で計画されている Visual Basic サポート」
(原文、英語)
Visual Basic support planned for .NET 5.0 – Visual Basic Blog (microsoft.com)
(翻訳)
上記をまとめると、VBAから.NETにシフトチェンジするよ、ということのようです。
「モダンExcel」は「.NET」
ちなみに、「モダンExcel」の2大ツールである「Power Query」「Power Pivot for Excel」では、上記「.NET」が使われています。
こうしたことを踏まえれば、「自動化といえばVBA」というこれまでの絶対的な構図は崩れ去り、これからは「.NET」による様々な自動化ツールが急速に世の中を席巻することになると思われます。
これが、「2025年の崖」の話に繋がるわけです。
現にマイクロソフトは「Power Platform」による「RPA」という自動化の仕組みを推し進めています。
Excelで自動化を考えるのであれば、今後は「モダンExcel」。
さらに色々な自動化を考えるのであれば、「Power Platform」。
こうした世の中になっていくのは、ほぼ間違いないでしょう。
Is VBA a dead end ?
何事も、海外の反応を見ることは、とても参考になり、良い勉強になります。
以下のブログは、2017年9月28日の投稿というかなり前に投稿されたものです。少なくとも、この時点では明確になっていなかった識者の予想が、現時点のファクトとして存在しているのは、興味深い事実でもあります。
たとえば、「MSはVBAに投資することはもうしない」「VBAは、最新のスクリプト、Web テクノロジ、.net/Java を追加するのが非常に困難だ」と、下記ブログは何年も前に主張しています。そして、「VBAは、技術的に行き詰まりだ」と結論付けています。ご判断は各自に任せます。
VBAにしかできないことって、そもそもナニ?
VBAによるマクロをExcelで使えば、様々な「自動化」ができるわけです。
そして、これまでExcelで自動化と言えば、代名詞のように「VBAによるマクロ」が当たり前でした。
そこで、具体的にどんなことができるのか、ごく簡単にまとめてみました。
下記は、VBAによるマクロを使った自動化のほんの一例です。このほかにも、色々な自動化ができます。
1.データ処理(数式の挿入、セルの書式設定、ピボットテーブルの作成更新、ユーザーフォームの作成など)
2.ファイル処理(Excelファイルの作成、変更、更新など)
3.ブック処理(ブックの開閉、保存など)
これだけ色々できるんだったら、VBAによるマクロで、十分じゃニャーの?
そうとも言えない、現実「ファクト」があるわけです。
上記「2.ファイル処理」と「3.ブック処理」、これらは「Power Automate Desktop」などの「RPA」ツールで自動化できます。
しかも、こうしたRPAツールの利点は下記でも述べる通り、単にExcelの自動化にとどまらず、様々なデータやプロセスと統合できます。
つまり、RPAはVBAよりも自動化の「拡張性」が高いわけです。
「モダンExcel」を推進する立場からすると、上記「1.データ処理」は、もはや「モダンExcel」ですべきだと思います。
そもそもVBAはExcel上で動くので、処理速度がとても遅いのです(モダンExcel比)。
きれいなデータにして準備する「Power Query(パワークエリ)」、きれいなデータをモデル化して可視化につなげる「Power Pivot for Excel」、従来からある「ピボットテーブル」「ピボットグラフ」「テーブル」を使いこなせば、Excelの上限値を越えてAccess同様に1億行のデータあるいはそれ以上のデータでさえも、Excel上で瞬時に分析できる、こうした「現実」「ファクト」もあります。
このように、「VBA」ができることは、「モダンExcel」とその先にある「RPA」を使えば、すべてできてしまいます。
しかも、Excelの上限値を超えることも、「モダンExcel」であれば難なくクリアもします。
「VBA」にしかできないことは、果たしてどこにあるのか、という視点で「VBA」が「RPA」よりも優位である点を探ると、ExcelでVBAを使うのであれば、VBAは細かい設定・指示をプログラムしやすいということはあるのかなとは思います。
ただ、「データ分析」や「データの見える化」(可視化)という点でいえば、「モダンExcel」の方がVBAよりもはるかに速くデータ処理が可能です。しかも、「モダンExcel」にはいわゆる「104万行の壁」と呼ばれるデータ読込限界もありません。
こうした点を踏まえれば、「データ分析」「可視化」に関しては、VBAよりも圧倒的に「モダンExcel」が有利であると言えるでしょう。
自動化対決! RPA VS VBA
VBAによるマクロも、RPAも、「自動化」できるという点は同じです。
上記1「データ処理」、2「ファイル処理」、3「ブック処理」というVBAによる自動化は、当然RPAでもできます。
ただし、自動化に対する姿勢・スタンスは、両者で大きく異なります。
以下、ごく簡単に違いをまとめてみます。
比較項目 | VBA | RPA |
---|---|---|
データ収集・入力・接続 | 手動で、一つのブックのみ… | 自動で接続し、複数のアプリと連携! |
使用できるアプリ | Excelだけを対象に自動化… | Excelを含むアプリをコラボして自動化! |
プログラミング能力 | 難しいプログラムスキルが必須… | ノーコード、ローコード! |
共同作業 | 少人数なら可能… | 全社共有が可能! |
メンテナンス | 困難を伴う… | プロセスが分かりやすく、容易! |
安全性(組織での管理) | 組織全体での管理は難しい… (マクロ禁止とすることは可能) | 誰が、いつ、何を使ったか、監査可能! 共有できるユーザー範囲も、制御可能! |
上記のように、RPAはVBAよりも優位性があります。
個人的には、比較項目の一番上「データ収集・入力・接続」(様々なデータと接続でき、色々な視点で分析が可能となる!)、一番下「安全性(組織での管理)」(内部統制的に必須!)、この2点でRPAがVBAよりもはるかに優れていると思っています。
規模の大きな組織であるほどExcelを使う自動化は、VBAではなくRPAを使うべき、現時点においてはそう考えています。
蒸気機関車になる、この選択肢もなくはない
消滅するかもしれないアーキテクチャー(構造)やテクノロジー(技術)に固執する、これもありだとは思います。
「産業革命」を見れば分かります。
かつて世の中を席巻していた「蒸気機関車」は「自動車」になりました。
そして今、自動車の動力は「エンジン」から「EV」「水素」などになり、まもなく「空飛ぶ自動車」も登場予定です。
このように技術革新が進む中、「蒸気機関車」はかなり人気ですね。私も何度か乗車しました。
浅草や京都では「人力車」なんかも、大変な人気です。
いずれも、「物珍しさ」「懐かしさ」がヒットの要因です。
でも、蒸気機関車も人力車も、ご存じのように交通機関としては、もはや「メインではない」のです。
今、Excelにおける自動化ツールは、日本ではまだまだVBAが主流です。
しかし、上述のようにマイクロソフトは公式に宣言したのです。
「今後は、Visual Basic を言語として進化させる予定はありません。」
「言語の変更を必要とする .NET Core の今後の機能は、Visual Basic ではサポートされない可能性があります。」
これを、どうとらえるか?
蒸気機関車よろしく、VBAを使い続ける、これも「可能である」のであれば、ありかもしれません。
VBAの歴史から、将来を占う
VBAを使い続けることが「可能である」のであれば、と奥歯に物が挟まるような言い方をしたのには、訳があります。
かつてマイクロソフトは、Microsoft Office 2008 for Mac でVBA サポートを一度廃止したことなどがあるからです。
ちなみに、上記マイクロソフトの公式宣言に対し「VBを利用する開発者で重視されているのは互換性なので、このことはあまり問題にならないかもしれない。」という意見もあります。
一方で、「Visual Basicユーザーは要注意、.NET 5より後では使えない可能性」という人もいます。
「脱Visual Basicは茨の道、VB.NETへのマイグレーションに待つ「落とし穴」」と発言する人もいます。
「サポート終了から10年たってもまだ現役、Visual Basicを「今度こそ」絶つ方法」を提唱する人もいます。
現に、1991年に登場した「Visual Basic」の正式サポートはすでに終了しています。
にも関わらず、未だ多くのVBが業務で使われ続けていますが、果たして本当に今後も使い続けられる実行環境が存在し続けるのか、と疑問を投げかける人も現れ、「VBアプリケーションの刷新が急務!」「脱Visual Basic最大の「難所」、VB.NETへの移行時に必ず直面するあの課題」を指摘する人もいます。
これらの指摘を、どう解釈し、VBAの今後をどう占うべきなのか?
マクロの登場は、1994年、平成6年!
時を戻そう!
Excelに「マクロ」という機能が搭載されたのは、西暦「1994年」、和暦「平成6年」です。
時代は、「細川内閣」から、連立与党の「羽田内閣」、そして「自社さ連立政権」へ。
社会党(当時)から、初の首班指名で「村山内閣」発足。
ネルソン・マンデラ氏が、南アフリカ共和国で「黒人初の大統領」就任。
個人的に思い出される衝撃的な出来事があったのも、1994年。
「音速の貴公子」アイルトン・セナ氏が天に召され、「松本サリン事件」が発生し、「ジュリアナ東京」が閉店したのも、この年。
ちなみに、この年、第36回日本レコード大賞は、Mr.Children「innocent world」。
どんだけ~、というお気持ちだにゃ~…。
そろそろ、時代にあったアーキテクチャやテクノロジーが必要なのでは???
Officeスクリプトとの関係
話の目先を少し変えます。
Excelのオンライン版で使える自動化ツール「Officeスクリプト」が、今注目されています。
「Officeスクリプト」は、マイクロソフトが提供する「Power Platform」との連携が容易なツールです。
Power Platformの一つに「Power BI」というビジネスインテリジェンスツール(データ分析ツール)がありますが、その原型が「モダンExcel」になります。
このOfficeスクリプトは、汎用性のある言語「Java Script」ベースのため、スクリプトの実行に使用されるマシン環境に関係なく、一貫した動作とアクセシビリティが得られ、他の Web サービスを呼び出すことも可能なツールとして今後自動化ツールとして脚光浴びそうです。
マイクロソフトは、この「Officeスクリプト」を、絶賛売り出し中です!
実際に試してみて、実に面白いツールだと思いました。
今はオンライン版Excelにのみ実装されているOfficeスクリプトですが、いずれデスクトップ版にも装備されるでしょう。
そうしたとき、VBAの立ち位置は、どうなるのか?
上述のように「今後は、Visual Basic を言語として進化させる予定はありません。」とマイクロソフトは言明もしています。
いずれにしても、Officeスクリプトのような新しいツールとの連携も、RPAならばノーコード、ローコードで可能となるわけで、RPAによる自動化の拡張性は無限大と言えるでしょう。
こうしたことは、VBAでは実行困難だと思います。
下記もご参照ください。
VBA VS officeスクリプト
この動画をご覧ください。かなり衝撃的な内容です。
要約すると……。
① VBAは「個人」で使う分には良いが、「チームで共有」することを踏まえるとofficeスクリプトに軍配
② officeスクリプトは「自動コメント機能」が便利(VBAにはそうした機能がない!)
③ メッセージボックスの作成など、VBAでできる機能の一部は現在、officeスクリプトではできないが、将来的に解決予定
そして、この動画の「最も重要な指摘」が、これ!
VBAは、
officeスクリプトで代替可能!
「少なくとも、あと10年先くらいまではVBAがあるかもしれないけれど、それ以降はVBAがofficeスクリプトで代替される可能性があるかもね」という、非常に興味深い、MVPの方のご指摘。
これも「ファクト」です。
彼女さんは
「あと10年でVBAが officeスクリプトに代替される」
って言っているけど、本当かな?!
技術進歩は、予想以上に速いぞ! 神のみぞ知る!
「VBAer」は「Power Platformer」になれば良いのでは?
以前「VBAでは「2025年の崖」に吸い込まれるぞぉ?!」を投稿しましたが、この記事には、これまでにない大きな反響がありました。
確かにVBAはもう古いね、これからはPower Platformなどの新しい技術に挑戦だ!
「脱VBA」に対し、前向きにとらえる意見は結構ありました。
その一方、こうしたコメントも。
「VBAで仕事している人もいるのだから………。」
既存VBAerを擁護する意見も、少数ですがありました。
これには、正直残念だな、そう思いました。
「臭い物に蓋をする。」
国民性なのか、いざというときになり、慌てふためく。それまでは、ただじっと耐え忍ぶ。いつも一緒です。
大切なのは「ファクト」です。
いつの世も、新しいものが出てきては、古いものが消え去る、もしくは変化する。
VBAも、今そうした状況に晒されている最中なのでしょう。
でも、こうも思うのです。
VBAerは、本当に優秀なプログラマーの方が多い。
VBAをやってみたいと思っている人たちは、自動化に対し、とにかくやる気がある。
だったら、その技能や情熱を、新しいアーキテクチャーやテクノロジーに振り向けてみたらどうだろう?
「Power Query」にしろ「Power Pivot for Excel」にしろ、VBAで自動化するよりも簡単だと思います。
その先にある「Power Platform」だって、VBAerであれば難なくこなせるはず。
「食わず嫌い。」
Power Platformに代表される「ノーコード」「ローコード」ツールに対し、こうした方が結構いると思います。
しかし、時代は着実に変化しているのです。
時代を見据え、これからのことを考えてみたらどうでしょう。
「1次情報」でいわれていることをしっかり受け止める、これは大切なことだと思いますよ。
ユー、まずは「モダンExcel」から、始めちゃいなよ!
VBAより、速く、大量のデータを、様々な視点で分析できるようになるよ!
【追記】MSの決断と反応
MSは次のとおり、VBAによるマクロに対する決定事項を公表、実行しています。
潜在的に危険なマクロがブロックされました (microsoft.com)
Office でインターネットから入手したマクロが既定でブロックされる – Deploy Office | Microsoft Docs
一言で説明すると、コンピューターウィルスを媒介するVBAをシャットダウンしたい、ということのようです。
確かに、EMOTETなどが蔓延し、大規模組織のみならず中小企業もかなり被害を受けている実態もあります。
こうした状況をかんがみ、MSが重大な決断を下した(下すように仕向けられた?)のでしょう。
これまでVBAを日常的に使ってこられた方々からすれば、今回のMSにおける決定事項は「寝耳に水」という反応もあるようです。
しかし、MSはかなり以前から、今回のVBAに対する決定事項を匂わせていました。このブログでも上記を含め、随分と前からMSがVBAに対する姿勢を大きく変化させていることは申し上げております。各界からも同様の意見を拝見することができます。
そこで問題となるのが、VBAに代わるツールをどうするか。
VBAに代わるものは、もう現存します。それも一つではなく、様々な代替案をMSは用意してくれています。モダンExcelを筆頭に、Officeスクリプト、LAMBDA関数、スピル、Power Automateなどがそれに当たります。
一方、こうしたツールは「オンライン」を前提としているので、「オフラインで自動化できるツールがない、だからVBAが必要だ」という意見も一部にあります。(➡現在、いずれもデスクトップ版で利用可能)
ただ、20年前と違い、ネット環境が当たり前の現在、あえてオフライン専用ツールが必要というわけではないと思います。
私も同意見です。VBAは強力すぎるので、役割分担を指せて、ツールを組み合わせて使わせようとMSはしているのだと思います。ツールを分けることで、セキュリティを確保しやすくなるなど、メリットが大きいのも一因でしょう。実際、Power BIを触っていても、きれいなデータにするまでをPower Queryで、きれいなデータにした後はDAXで、共有はPower BI DesktopではなくPower BI Serviceで、という具合に明確に役割をわけています。
思うに、MSがインタネットエクスプローラーを廃止した際にも、今回同様の反応がありました。
Microsoft 社 Internet Explorer のサポート終了について:IPA 独立行政法人 情報処理推進機構
このツイートを拝見すると分かりますが、海外とわが国では、今回のMSの決断に対する反応が異なります。恐らく、海外ではVBAに対するニーズが日本ほど高くないのだろうと思います。わが国では、Excelで何でもやろうとする傾向がありますが、海外ではそれほどでもないと聞いたこともあります。こうしたことも、今回の反応に影響を及ぼしているのかもしれませんね。
VBAを使われている現場では手遅れにならないうちに、早急に代替案を検討・実行すべきでしょう。
上記のような代替ツールで、VBA以上のことができるようになっています。
「モダンExcel研究所」を楽しむ際の【注意事項】
コンテンツコピー、スクレイピングなど【厳禁】 ☚【検知ツール設置済】☚悪質な場合【法的措置】を講じます
(過負荷によるサーバー障害が生じた経験上、ご協力お願いいたします!)
モダンExcel研究所
フォローお待ちしてます!