VBAの現在地と移行戦略

· · VBA, Excel, Office, 既存資産活用・移行, Windows開発

まず結論

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 アプリへ

画面遷移や権限制御が増えすぎているなら、アプリとして作り直すほうが自然です。

段階移行の進め方

  1. 資産台帳を作る - どのファイルがあるか、依存関係は何か
  2. コードを責務で分ける - UI操作、業務ロジック、外部連携を分離
  3. 置き換え先を責務ごとに決める - 移行先を1つに統一しない
  4. インターフェイスを先に固める - 入力、出力、エラー時の契約を決める
  5. 並行稼働で比較する - 旧版と新版の出力を比較してから切り替える

よくある失敗

  • 「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 整合や登録コマンド、はまりどころも含めて整理した実装ガイドです。

記事を読む

関連トピック

このテーマと近いトピックページです。記事を起点に、関連するサービスや他の記事へ進めます。

このテーマがつながるサービス

この記事は次のサービスページにつながります。近い入口からご覧ください。

ブログ一覧に戻る