27
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[備忘録] VBScript廃止とVBAへの影響まとめ

27
Posted at

はじめに

vbscript_deprecation_roadmap.png

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以降で利用可能

まとめ

image.png

重要なポイント

VBA 自体は引き続き利用可能ですが、VBScript に依存する部分は将来的に確実に動かなくなります。vbscript.dll が削除される前に、早めに移行対応を進めることが安全です。

対応の優先度

  1. : VBScript.RegExp を直接利用しているコード
  2. : .vbs ファイルを呼び出しているマクロ
  3. : 将来的に影響する可能性があるその他の VBScript 依存コード

最終的な結論

「VBA を使い続けること自体は安心。ただし、VBScript に依存している部分は早急に対応が必要」

Office 2508 以降なら RegExp クラスを直接使えるので、VBScript 参照は不要になります。この機会にコード資産を見直し、より安定した実装に移行することをお勧めします。

参考リンク

27
20
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
27
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?