VBAの現在地と移行戦略
まず結論
VBA は Office デスクトップアプリを拡張するためのイベント駆動言語です。2026年3月時点で Microsoft は「VBAを廃止する」とは言っていません。ただし、使える場所と条件は明確になってきています。
- VBA はデスクトップ版 Office の内部で動く技術です
- Excel for the web では VBA は作成・実行できません
- インターネット由来ファイルのマクロは既定でブロックされます
- 考えるべきは「全部捨てるか」ではなく「どの領域を VBA に残し、どれを外に出すか」です
VBA とは何か
VBA(Visual Basic for Applications)は、Excel や Access などの Office アプリの中に組み込む拡張言語です。汎用アプリ開発基盤ではなく、Office アプリの内側で動く拡張機能と考えるほうが実態に合います。
VBA の強み:
- Excel や Access の画面・帳票・ブック構造に非常に近い
- 利用者が手元でボタンを押して処理する「ローカル完結の自動化」に強い
VBA の弱点:
- サーバー、ブラウザ、モバイル、マルチテナント Web システム向けではない
VBA の主な制約
1. デスクトップ前提
VBA はデスクトップ版 Office でしか動きません。ブラウザ版や Mac・iPad では実行できません。
2. セキュリティと配布の摩擦
インターネット由来のファイルのマクロは既定でブロックされます。メール添付やダウンロードした .xlsm がそのまま動かず、「有効化してください」の運用が必要になります。
3. 32bit / 64bit の問題
Office 2019 と Microsoft 365 の既定は 64bit です。古い VBA コード(特に Declare で Windows API を呼んでいるもの)は 64bit 環境で動かないことがあります。
4. 無人実行・サーバー実行に向かない
Microsoft は Office のサーバー側自動化を推奨・サポートしていません。Windows サービスから Excel を起動したり、夜間バッチで回したりするのは危険です。
5. 保守性・テスト性の問題
コードがブックや Access ファイルの中に閉じ込められ、バージョン管理やコードレビューがしにくくなります。
6. VBScript 廃止の影響
2025年に VBScript の段階的廃止が発表されました。外部 .vbs の実行や VBScript.RegExp に依存している VBA プロジェクトは影響を受けます。ただしこれは VBScript の廃止であり、VBA 自体の廃止ではありません。
VBA はこれから使えなくなるのか
「明日から全部使えなくなる」わけではありませんが、「どこでも何にでも使える」時代でもありません。
- デスクトップ Excel の深い操作では、まだ VBA の守備範囲が広い
- ブラウザ / Microsoft 365 のワークフローでは Office Scripts や Office Add-ins が自然
- VBA の将来は消滅より境界の明確化と見るのが妥当です
置き換えるべきケース / 置き換えなくてよいケース
| 状況 | 判断 | 理由 |
|---|---|---|
| 自分の PC の Excel で小規模自動化 | そのまま使う | VBA の守備範囲 |
| ロジックが重くなってきた | ハイブリッド化 | VBA は薄く、重い処理は .NET へ |
| ブラウザ・Mac・iPad でも使いたい | VBA を中心にしない | Office Add-ins を検討 |
| M365 ワークフローで回したい | Office Scripts + Power Automate | クラウド側の自動化向け |
| 夜間バッチ・サーバー実行したい | Excel 自動化をやめる | Microsoft 非推奨 |
| 複雑な業務フローが中心 | アプリ化を検討 | Office ファイル内ロジックの限界 |
現実的な置き換え先
1. Excel を残して中身だけ .NET や別プロセスへ出す
画面や帳票の入口はそのままに、業務ロジックや重い処理だけ外に出す。利用者の見た目を壊さずに移行できます。
2. 無人帳票生成は Open XML で直接ファイル生成
サーバーで Excel を起動するのではなく、Excel ファイルを直接組み立てる方法に寄せる。
3. M365 上の業務フローなら Office Scripts + Power Automate
OneDrive/SharePoint 上のブックを自動化するなら有力。ただしデスクトップ Excel の全機能はカバーしていません。
4. クロスプラットフォームなら Office Add-ins
HTML/CSS/JavaScript で構築し、Windows/Mac/iPad/ブラウザで動作。中央配布にも向きます。
5. Excel 自体が UI でなくなっているなら Windows アプリや Web アプリへ
画面遷移や権限制御が増えすぎているなら、アプリとして作り直すほうが自然です。
段階移行の進め方
- 資産台帳を作る - どのファイルがあるか、依存関係は何か
- コードを責務で分ける - UI操作、業務ロジック、外部連携を分離
- 置き換え先を責務ごとに決める - 移行先を1つに統一しない
- インターフェイスを先に固める - 入力、出力、エラー時の契約を決める
- 並行稼働で比較する - 旧版と新版の出力を比較してから切り替える
よくある失敗
- 「VBA は古いから全部 Office Scripts へ」→ 機能カバー範囲が違う
- 無人実行なのに Excel を起動し続ける → Microsoft 非推奨
- 画面・帳票・業務ルールを同時に全部変える → 業務仕様の取り落とし
- 32bit/64bit と外部参照を後回し → 終盤で詰まる
- VBScript の話と VBA の話を混同 → 社内の誤情報が独り歩き
まとめ
VBA は Office デスクトップアプリに密着した拡張言語です。答えは「全部置き換える」でも「何も変えない」でもなく、責務ごとに分けて段階的に薄くすることです。置き換えは「翻訳」ではなく「整理」として進めるのが最も安全です。
関連する記事
同じタグを共有する最新の記事です。さらに近い話題で知識を深められます。
VBScript非推奨化に備える移行ガイド
Windows の VBScript 段階廃止に向け、VBA や Excel マクロ、社内ツールの依存を棚卸しし、静的検出と実行ログで隠れた呼び出しを洗い出す手順、PowerShell や Office Scripts などへの代替選定、署名運用と段階展開までを実務目線で整...
Excel帳票出力の方式選定ガイド
Excel 帳票出力を Windows アプリやサーバー処理にどう組み込むかを、COM 自動化、Open XML 直接生成、テンプレート差し込み、既存 VBA 活用の四方式で比較し、要件別の選び方や設計時のハマりどころまでまとめた判断表です。
.NET 8 DLLをVBAから型付きで呼び出す方法
.NET 8 のクラスライブラリを COM 公開し、dscom で TLB を生成して、VBA から早期バインディングで型付き利用するまでの手順を、bitness 整合や登録コマンド、はまりどころも含めて整理した実装ガイドです。
Windowsで「Windows によって PC が保護されました」が出る理由
Windowsアプリ配布時にSmartScreen警告が出る理由を、コード署名、EV/OV証明書、Azure Artifact Signing、MSIX、Microsoft Store、ClickOnce、社内配布、App Controlまで実務目線で整理します。
Office 2024 / Microsoft 365 で ActiveX が動かないときの対処ガイド
Office 2024 と Microsoft 365 で ActiveX が動かない原因を、設定既定値、bitness、COM 登録、依存ランタイム、IE モードの順で切り分ける実務手順をまとめた現場向けガイドです。
関連トピック
このテーマと近いトピックページです。記事を起点に、関連するサービスや他の記事へ進めます。
Windows技術トピック
Windows 開発、不具合調査、既存資産活用の技術トピックをまとめた入口です。
このテーマがつながるサービス
この記事は次のサービスページにつながります。近い入口からご覧ください。
Windowsアプリ開発
業務アプリ、装置連携、通信ツールなどの Windows ソフト開発を支援します。
既存資産活用・移行支援
COM / ActiveX / OCX、32bit / 64bit 制約を抱える既存資産の活用と移行を支援します。