VBScript廃止の影響で、Excelマクロの何が止まるか社内のVBAから該当行を数える
VBScriptの廃止で影響を受けるExcelマクロは、.vbsのファイルを呼ぶ処理と、VBScriptのRegExp(正規表現)を使う処理の2つです。既定で無効になる段階はおおむね2026年か2027年で、Version 2508以降のMicrosoft 365ならRegExpはVBAの標準機能として動きます。マクロの守りが架空のブック8本を解析ツールで数えると6本に該当があり、「VBScript」の文字で探すだけでは2本しか見つかりませんでした。(2026年10月時点)
読み解きから直す・置き換えるまでの流れと費用はExcelマクロの引き継ぎのページにまとめています。
要点
- VBScriptの廃止で止まりうるExcelマクロの処理は、.vbsを呼ぶ処理とVBScriptのRegExpを使う処理の2つです(Microsoft、2025年9月)。
- VBScriptが既定で無効になる第2段階はおおむね2026年か2027年で、OSから消える第3段階の時期は決まっていません。
- Version 2508(ビルド19127.20154)以降のMicrosoft 365では、RegExpがVBAに標準で入っています。
- 架空の8本・105行を解析ツールで数えると6本に14か所が見つかり、「VBScript」の文字検索では2本・4か所でした。
- 参照設定はコードの外にあるため、文字検索ではなく、ブックの中の参照の一覧まで読んで数えます。
目次
VBScriptの廃止で、Excelマクロの何が止まるのですか?
止まりうるのは、VBAから.vbsのファイルを動かす処理と、VBScriptのRegExpを使う処理です。RegExpは、文字の並びの決まりで探したり置き換えたりする機能です。Microsoftは2025年9月9日のVBA向けの記事で、この2つを挙げています。
VBAのマクロそのものは廃止の対象ではありません。作った人がいないマクロの見方はExcelマクロの引き継ぎにまとめています。
書き方ごとに、止まる時期と直し方を並べると次のとおりです。RegExpの2つはOfficeを上げれば済み、.vbsだけは書き直しが要ります。
| 書き方 | VBAの例 | 止まる時期(Microsoftの記事) | 直し方 |
|---|---|---|---|
| 参照設定のRegExp | 参照設定にvbscript.dll、Dim re As New RegExp |
第3段階。Officeが2508以降なら動く | Officeを2508以降へ |
| CreateObjectのRegExp | CreateObject("VBScript.RegExp") |
2508より前のOfficeは、VBScriptが無効のPCで動かない | Officeを2508以降へ |
| .vbsを動かす | Shell "wscript.exe ...backup.vbs" |
第3段階で使えなくなる | 中身をVBAかPowerShellなどへ移す |
| それ以外 | Dictionary・FileSystemObjectなど | 記事が挙げる2つに入らない | 記事の範囲外 |
.vbsの呼び出しが第2段階でどうなるかは、Microsoftの記事に書かれていません。
VBScriptは、いつ使えなくなるのですか?
既定で無効になる第2段階は、Microsoftの2025年9月9日の記事に「approximately 2026 or 2027」(おおむね2026年か2027年)と書かれています。2026年10月17日に開いたMicrosoft Learnの一覧では、VBScriptは「将来のWindowsのリリースで廃止する」とだけあり、日付はありません。2026年中に始まるのか2027年になるのかは、確かめられませんでした。Windowsから削除する第3段階の時期は決まっていません。今は第1段階です。VBScriptは機能オンデマンド(あとから入れたり外したりできるWindowsの機能)として、既定で有効になっています。
非推奨の発表は2023年10月で、Microsoft Learnの非推奨の機能の一覧に載っています。2024年5月の発表を紹介した窓の杜の記事では、第2段階は「2027年ごろ」でした。2025年9月の記事では「2026年か2027年」になっています。
2026年10月16日に、マクロの守りのPC(Windows 11 Pro)で短い.vbsを動かしました。中ではVBScript.RegExpを使っています。結果はそのまま動き、この1台はまだ第1段階の状態でした。ほかのPCは情報担当の設定で変わるので、1台ずつ確かめます。
社内のVBAから、該当する行をどう数えますか?
ブックからVBAを取り出し、コメントを除いた行を書き方ごとに数えます。参照設定は、ブックの中の参照の一覧から読みます。マクロの守りが書いたvbscript_refs.pyは、oletoolsのolevbaを使い、Excelを起動せずに数えます。要点は次の数行です。
LATE = re.compile(r'CreateObject\s*\(\s*"VBScript\.RegExp"', re.I)
EARLY = re.compile(r'\b(?:As\s+(?:New\s+)?|New\s+)(?:VBScript_RegExp_55\.)?(?:RegExp|MatchCollection|Match|SubMatches)\b', re.I)
VBS = re.compile(r'\.vbs\b|\b[wc]script(?:\.exe)?\b(?!\.(?:Shell|Network))', re.I)
# 参照設定はコードの外(vbaProject.bin の VBA/dir)にある
raw = olevba.decompress_stream(bytearray(ole.openstream(entry).read()))
refs = [m for m in LIBID.finditer(bytes(raw)) if b'vbscript.dll' in m.group(1).lower()]
試すために、架空のブック8本(.xlsm 7本と.xlam 1本、計105行)を作り、14か所を仕込みました。解析ツールは14か所をすべて見つけ、該当は8本のうち6本でした。
「VBScript」の文字で探すだけだと、見つかったのは2本・5行で、うち1行はコメントでした。参照設定だけが残った.xlamや、As New RegExpの行、.vbsを動かす行は出ません。参照設定はコードの文字ではなく、ブックの中の参照の一覧にあるからです。
サンプルはExcelで保存したブックではなく、Officeの仕様書(MS-OVBA)の形式でスクリプトが書いたものです。社内の実物を--scanで数えたら、何本かはVBAの画面の参照設定と見比べてください。
Version 2508以降のMicrosoft 365なら、直さなくてよいのですか?
RegExpを使う処理は直さなくても動きますが、.vbsを動かす処理は残ります。Microsoftの記事によると、Version 2508(ビルド19127.20154)以降は、RegExpがVBAに標準で入っています。CreateObjectで作る書き方も、2508以降ならどのWindowsでも動くとされています。
手元のビルドは、Excelの[ファイル]→[アカウント]の製品情報に出ます。マクロの守りのPCは16.0.20430.20146で、19127より大きいので2508より新しい版です。
気をつけたいのは、社内のPCの版がそろっていない場合です。2508より前のOfficeでは、CreateObjectのRegExpが動くのは、VBScriptが有効なWindowsだけです。同じブックが、更新の止まったPCでだけ止まります。
なお、記事が挙げているのはMicrosoft 365だけです。Office 2021などの買い切りの版については書かれていません。
見つかった行は、どう直せばよいですか?
RegExpの行はOfficeを2508以降へ上げて試し、.vbsを動かす行は中身を移します。Microsoftの記事の勧めは3つです。2508以降へ上げること、新しいマクロでは標準のRegExpを使うこと、VBScriptを無効にしたPCで試すことです。
- 解析ツールで、ブックごとに該当する行とモジュール・行番号を一覧にする
- マクロを使うPCのOfficeのビルドを集め、19127.20154より前のPCを洗い出す
- 情報担当にVBScriptを無効にしたPCを1台用意してもらい、該当するブックを動かす
- .vbsを動かす行は、.vbsの中身を読んでVBAかPowerShellなどに移す
見落としやすいのは.vbsの中身です。外のファイルを動かすだけに見えて、中で別のソフトを操作していることがあります。架空の出荷指示のブックも、送り状のソフトに渡すスクリプトをその場で書いて動かしていました。
私が引き継ぐときは、.vbsの中身まで読み、同じことをVBAの中でできるかを先に確かめます。マクロの守りでは、数えた結果を引き継ぎ書の「動く条件」の欄にも残します。
このサイトで相談するには?
VBScriptに頼るマクロがあるか分からない場合も、マクロの守りで一緒に数えます。何をどう頼むか決まっていなくても大丈夫です。御社のやり方に合わせて、進め方を一緒に考えます。準備は要りません。
無料で相談するからお送りください。返信は最短当日です。
よくある質問
- VBScriptが廃止されると、VBAのマクロも使えなくなりますか?
- いいえ。廃止されるのはWindowsのVBScriptで、VBAそのものではありません。止まりうるのは、VBAの中で.vbsを呼ぶ行とVBScriptのRegExpを使う行です。
- 手元のPCで、VBScriptがまだ有効かはどう確かめますか?
- 短い.vbsを1つ、cscriptで動かすのが手早い方法です。2026年10月16日にマクロの守りのWindows 11で試したときは、まだ動きました。
- WScript.Shellを使う行も止まりますか?
- Microsoftの記事には書かれていません。VBA向けの記事が挙げる2つに入らないため、解析ツールでは数えていません。気になる場合は別に一覧にしておきます。
- Office 2021などの買い切りの版でも、RegExpは標準になりますか?
- Microsoftの記事が挙げているのはMicrosoft 365のVersion 2508以降だけです。買い切りの版では、VBScriptを無効にしたPCで試して確かめます。
この記事の実験・計算の条件
架空のブック8本(.xlsm 7本・.xlam 1本、計105行)に14か所を仕込み、解析ツールで数えた結果。Windows 11、2026年10月16日。
出典
- Microsoft 365 Developer Blog「How to prepare VBA projects for VBScript deprecation」(2025年9月9日、段階・影響する2つの使い方・Version 2508 の RegExp)(2026年10月16日確認)
- Microsoft Learn「Deprecated features in the Windows client」(VBScript の非推奨の発表 2023年10月。2026年9月23日更新)(2026年10月16日確認)
- Microsoft Learn「Resources for deprecated features in the Windows client」(VBScript は機能オンデマンドとして提供してから削除。2026年9月23日更新)(2026年10月16日確認)
- 窓の杜「『VBScript』は2027年頃にデフォルトで無効に」(2024年5月23日、Microsoft の3段階の発表の紹介)(2026年10月16日確認)
- マクロの守り「VBScript への依存を数える解析」のスクリプト(scripts/figs/vbscript_refs.py)、架空のブック8本・105行、2026-10-16 実行(2026年10月16日確認)