マクロは一部で「ウィルスが危険だから禁止すべき」と言われます。
しかし、実際の現場業務を考えれば、マクロの有用性は明らかです。たとえば毎月の売上データを各店舗・各部署から集計し、部署別にまとめ、さらに特定の商品や期間に絞って抽出するといった作業は、マクロなら数分で正確に処理できます。しかし、これを手作業で行えば、膨大な時間がかかり、数字の転記ミスや集計漏れといった人為的なエラーも増えてしまいます。マクロを全面禁止すれば効率は大幅に低下し、むしろ業務リスクを高める結果になりかねません。
本当に危険なのはマクロそのものではなく、不審なメールや外部サイトから入手したExcelファイルに仕込まれたマルウェアです。したがって重要なのは「マクロを禁止すること」ではなく、「不正なマクロを持ち込まないこと」です。
現場で私たちが意識すべき行動はシンプルです。
- 知らない送信元から届いたExcelファイルは安易に開かない
- 「有効化しますか?」と出たら、業務上必要なファイルかを確認する
- 少しでも不安があれば、自分で判断せずセキュリティ担当や上長に相談する
マクロは私たちの業務を支える強力な味方です。正しく扱えば業務効率を高め、ミスを減らしてくれます。だからこそ、危険な使い方を避けるための基本的な行動を徹底し、安全と効率を両立させていくことが必要です。
一方、マクロの利用をMicrosoftが推奨しなくなったのは、「ウィルスへの感染リスク」だけではありません。
マクロを社員にたとえるなら、「ExcelやWordの中で、あなたの代わりに仕事をしてくれる、プログラミング(VBA)で動く『頼れるベテラン社員』」です。マクロというベテラン社員は30年以上に渡って、会社の事務作業の効率化に寄与したのですがーー
そろそろ引退してはどうかね?
と、Microsoft は考えているのです。
それは、個人から組織へとシステムの管理がシフトしているのが背景です。
今のアプリケーションは、パソコンの中だけでなく、インターネット上(クラウド)でファイルを共有して動くのが当たり前になってきました。
しかし、マクロという「ベテラン社員」は、あなたのパソコンのなかという「自分のオフィス」でしか働けません。インターネット上の共有スペースでは、ほとんど動けないのです。
さらにマクロという「ベテラン社員」は、作った人にしかわからない独自の魔法のようなもので動いていることが多いのです。多くのエンジニアは「他人のVBAを修正するのは、ゼロから作るより難しい」と感じています。VBAのコードには、コメントが少なく、プログラマは仕様書を書くこともあまりありません。他人から見ると、プログラマの「意図」が読み取れません。いわば設計図のない家を改築する困難さがつきまといます。
その人が作ったマクロは、本人にしか直せず、他の人は中身が全然わかりません。その人が会社を辞めたり、異動したら・・・ある日、その業務は動かなくなるか、誰も引き継げなくなるリスクがあります。
そのため、組織にとって望ましいのは、誰でもメンテナンスでき、記録が残る標準的なやり方で自動化を進めることです。
Microsoftがマクロに変えて、推進しようとしている道具は、Office Scripts と Power Platform です。
- Office Scripts:Excel for the Webを中心とした、TypeScriptベースの現代的な自動化技術。クラウドで安全に実行され、バージョン管理や共有が容易。
- Power Platform(Power Automate, Power Apps):API連携やUIベースの自動化(RPA)を中心として、業務プロセス全体を自動化するためのプラットフォーム。マクロのように単一のファイルに閉じず、企業全体のデジタル変革(DX)を促進する。
なかでも、Power Platformは、多くの大企業が「全社員に基礎研修を受講させる」など、「デジタル人材の底上げ」 の核として位置づけてます。わたしの開発業務でも中核的な位置づけを占めてます。
しかし、長年マクロを実装してきた者にとって、新たな技術となるPower Platformは、早々、容易に取り組めるモノではありません。両者は道具の設計思想がかなり異なります。
端的にはマクロは、Excelシートの「セル」をどうするかの発想です。「このシートの、このセルを、こう書き換えて…」的なロジックを構築します。
一方、Power Platform では、セルという見方をしません。
- Excelのデータを 「正式なテーブル」 として整形する。
- そのテーブルデータを 「一括で取得」 し、「一括で処理」 し、必要なら 「一括で書き戻す」。
- 細かい条件分岐や計算は、Power Automate内の 「変数」 や 「データ操作」 の機能で行う。
マクロではやりたいこと(セルの値を更新する)が明確であれば、プログラムでちょいちょい出来ていたのが、Power Platform では、設定作業が非常に多く、そこに違和感を感じます。
この違和感は、Power Automateの中で、「Office Scriptsを実行する」アクションを使うことで、解決できるのでしょうが・・・古いエンジニアは、新しい技術を取得する怖さも感じます。

古い船には新しい水夫が
乗り込んで行くだろう
古い船をいま動かせるのは
古い水夫じゃないだろう
なぜなら古い船も新しい船のように
新しい海へ出る
古い水夫は知っているのサ
新しい海のこわさを
~「イメージの詩(吉田拓郎)1970年」
DX化が不可逆的な進化を遂げるいま、いままで、マクロを多数使ってきた日本の伝統的な会社(古い船)は、大きく舵取りを変えていかなければなりません。
なぜなら、多くのベンチャー企業は、失敗を恐れず、新しい海を目指しているからです。
そして、古い船を動かせるのは古い水夫ではありません。古い船をいま動かせるのは新しい水夫なのでしょう。