はじめに
Microsoft は近年、レガシー技術の整理を進めており、その一環として VBScript の段階的な廃止 が発表されています。本記事では、そのロードマップと VBA への影響 を整理し、Excel や Access で VBA を利用している方に向けて、今後必要となるコード資産の棚卸しについてまとめます。おもに自分用の備忘録としてまとめました。
VBScript 廃止ロードマップ
Microsoft は段階的な廃止アプローチを採用しています:
フェーズ1(現在)
- Windows に含まれるが「Feature on Demand」扱い
- デフォルトでは利用可能
フェーズ2
- デフォルト無効化
- 管理者が明示的に有効化しないと利用できない
フェーズ3
- 将来の Windows リリースで完全削除
-
vbscript.dll自体が消える
VBA への影響は?
基本的な影響
VBA 自体は今後も Office のマクロ機能として利用できますが、VBScript に依存したコードは将来的に動作しなくなるため注意が必要です。
影響を受ける具体的なケース
-
VBScript.RegExp(正規表現ライブラリ) -
.vbsファイルをShell/CreateObjectで実行 -
ScriptControl経由で VBScript を評価
コード例による比較
❌ NGパターン(将来動かなくなる)
' VBScript.RegExp を利用しているコード
Dim re As Object
Set re = CreateObject("VBScript.RegExp")
re.Pattern = "\d+"
re.Global = True
If re.Test("abc123def") Then
Debug.Print "マッチしました"
End If
✅ OKパターン(推奨移行先)
' Office Version 2508 (Build 19127.20154) 以降
' VBA に統合された RegExp クラスを利用
Dim re As Object
Set re = New RegExp
re.Pattern = "\d+"
re.Global = True
If re.Test("abc123def") Then
Debug.Print "マッチしました"
End If
対策のポイント
1. 参照ライブラリの棚卸し
VBA プロジェクトで以下の参照が設定されていないか確認
- 「Microsoft VBScript Regular Expressions」
- その他 VBScript 関連ライブラリ
2. コード検索
以下のようなコードが残っていないかプロジェクト内を検索
CreateObject("VBScript.RegExp")CreateObject("ScriptControl")-
.vbsファイルの実行コード -
Shellコマンドでの.vbs呼び出し
3. 代替手段の検討
| 旧手法 | 新手法 |
|---|---|
VBScript.RegExp |
RegExp クラス(VBA統合版) |
ScriptControl |
.NET 呼び出しや他言語サービスへ移行 |
.vbs ファイル実行 |
VBA サブルーチン化またはPowerShell等 |
実際の移行手順
Step 1: 現状把握
' プロジェクト内で以下のような記述を検索
' CreateObject("VBScript.RegExp")
' CreateObject("MSScriptControl.ScriptControl")
Step 2: 参照設定の確認
- VBA エディタ → ツール → 参照設定
- VBScript 関連の参照を特定
Step 3: コード書き換え
' Before(旧)
Dim regex As Object
Set regex = CreateObject("VBScript.RegExp")
' After(新)
Dim regex As Object
Set regex = New RegExp ' Office 2508以降で利用可能
まとめ
重要なポイント
VBA 自体は引き続き利用可能ですが、VBScript に依存する部分は将来的に確実に動かなくなります。vbscript.dll が削除される前に、早めに移行対応を進めることが安全です。
対応の優先度
-
高:
VBScript.RegExpを直接利用しているコード -
中:
.vbsファイルを呼び出しているマクロ - 低: 将来的に影響する可能性があるその他の VBScript 依存コード
最終的な結論
「VBA を使い続けること自体は安心。ただし、VBScript に依存している部分は早急に対応が必要」
Office 2508 以降なら RegExp クラスを直接使えるので、VBScript 参照は不要になります。この機会にコード資産を見直し、より安定した実装に移行することをお勧めします。
参考リンク

