【2026年9月最新】VBScriptでできることは?特徴・書き方から非推奨化の理由・移行方法まで完全解説
「経理部の共有フォルダに、拡張子.vbsのファイルが大量に残っている」「退職した情シス担当が作ったログオンスクリプトが、今も動いているらしい」——こうしたVBScriptにまつわる話は、実は多くの企業で今も現役の課題です。
VBScriptはWindowsに長らく標準搭載されてきたスクリプト言語で、特別な開発環境がなくても手軽に業務自動化スクリプトを書けることから、2000年代を中心に社内ツールとして広く使われてきました。しかし現在、Microsoft自身がVBScriptの非推奨化・段階的な廃止を公式に表明しており、状況は大きく変わりつつあります。
この記事では、VBScriptの特徴・できること・基本的な書き方を整理したうえで、なぜ今VBScriptが非推奨になっているのか、社内に残る古いVBScript資産をどう扱うべきかを、非エンジニアの経営者・管理職にも分かる形で解説します。
特に、経理・総務・情シスといったバックオフィス部門では、専任のエンジニアがいないまま「詳しい人が独学で作った便利スクリプト」が長年運用され続けているケースが典型的です。技術的な良し悪しの前に、まず「自社にどんなリスクが眠っているか」を正しく把握することが、この記事を読む一番の価値になるはずです。
01 OVERVIEW VBScriptとは Microsoftが開発した、環境構築不要のスクリプト言語
VBScript(正式名称: Visual Basic Scripting Edition)は、Microsoftが1996年に公開した軽量なスクリプト言語です。Visual Basic(VB)やExcel等のマクロ言語であるVBA(Visual Basic for Applications)と似た文法を持ちますが、より簡易な用途向けに設計された言語です。
| 項目 | 内容 |
|---|---|
| 正式名称 | Visual Basic Scripting Edition |
| 開発元 | Microsoft |
| 公開年 | 1996年 |
| 拡張子 | .vbs |
| 実行環境 | Windows Script Host(WSH)/かつてのInternet Explorer/クラシックASP |
| 現在の位置づけ | Microsoftが非推奨化を表明、段階的廃止が進行中 |
📚 用語解説
Windows Script Host(WSH):Windowsに標準搭載されている、VBScriptやJScriptなどのスクリプトを実行するための仕組み。コンソール上で実行する"cscript.exe"と、ダイアログ表示を伴う"wscript.exe"の2種類の実行ホストがある。拡張子.vbsのファイルをダブルクリックするだけでスクリプトが動くのは、このWSHが背後で処理しているため。
VBScript最大の特徴は、専用の開発環境(IDE)やコンパイラが不要な点です。Windowsに標準搭載のメモ帳でコードを書き、拡張子を「.vbs」にして保存するだけで、ダブルクリックひとつで実行できます。この手軽さから、専門のプログラマーでなくても業務自動化の小さなスクリプトを書けるツールとして重宝されてきました。
02 USE CASES VBScriptでできること ファイル操作からExcel連携、Webページの自動操作まで
VBScriptは軽量な言語ですが、Windowsが提供する各種の機能(COMオブジェクト)を呼び出せるため、実務では幅広い自動化タスクに使われてきました。
| 用途 | 具体例 |
|---|---|
| ファイル・フォルダ操作 | フォルダの一括作成・ファイルのコピー/移動/削除・ファイル名の一括変更 |
| Excel/Office連携 | Excelを起動してマクロを実行、複数ファイルの一括処理 |
| PC操作の自動化 | メッセージボックスの表示、定型入力の自動化、簡易的なリマインダー |
| システム管理 | Active Directoryのログオンスクリプト、Windowsサービスの起動/停止 |
| Webページ操作(レガシー) | かつてはInternet Explorer上でのクライアントサイドスクリプトとして使用 |
| クラシックASP(レガシー) | サーバーサイドWebアプリのスクリプト言語として使用 |
VBScriptが最も活躍してきたのは、大規模なシステム開発というより「情シス担当者や経理担当者が、日々の反復作業を少し楽にするための小さなスクリプト」という役割です。この用途は、現在ではPowerShellやExcelマクロ(VBA)、あるいはClaude Codeによる自動化に置き換わりつつあります。
2-1. VBScriptとJScriptの違い
Windows Script Hostでは、VBScriptと並んでJScript(MicrosoftによるJavaScriptの実装)も実行できます。両者はどちらもWSH上で動作し、できることもほぼ同じですが、文法のベースがVB系かJavaScript系かという違いがあります。
| 項目 | VBScript | JScript |
|---|---|---|
| 文法のベース | Visual Basic系 | JavaScript系 |
| 拡張子 | .vbs | .js(WSH用。Web用JavaScriptとは別物) |
| 変数宣言 | Dim(型はすべてVariant) | var(動的型付け。number/string/boolean等はtypeofで判別可能) |
| 主な利用者層 | Visual Basic経験者・非エンジニア | C言語系・JavaScript経験者 |
現在では、WSH用のJScript自体もVBScriptと同様に利用機会が減っており、Web開発で使われる現代のJavaScript(Node.js等)とは別物として区別して考える必要があります。
03 SYNTAX VBScriptの基本的な書き方 メッセージ表示・変数・条件分岐・ファイル操作のサンプル
3-1. 最もシンプルな例:メッセージを表示する
' メモ帳で以下を入力し、hello.vbs として保存 → ダブルクリックで実行 MsgBox "Hello, World!" ' シングルクォート(')から行末まではコメント扱い ' MsgBox はダイアログボックスでメッセージを表示する組み込み関数
3-2. 変数の宣言と条件分岐
' VBScriptの変数はすべて Variant型(型を指定しない)
Dim userName
userName = "田中"
Dim age
age = 28
If age >= 20 Then
MsgBox userName & "さんは成人です"
Else
MsgBox userName & "さんは未成年です"
End If
' 文字列の連結には "&" を使う。"+"も両辺が文字列なら使えるが、
' 数値と混在すると意図せず計算されてしまうことがあるため "&" が安全
📚 用語解説
Variant型:VBScriptにおける唯一のデータ型。数値・文字列・日付・オブジェクトなど、あらゆる種類の値を1つの型で扱える柔軟な仕組み。C言語やGo言語のように「int型」「string型」と明示的に型を指定する必要がない反面、意図しない型変換によるバグが起きやすいという弱点もある。
3-3. 繰り返し処理(ループ)
' For...Next ループ(1から5まで繰り返す)
Dim i
For i = 1 To 5
MsgBox "カウント: " & i
Next
' Do While ループ
Dim count
count = 0
Do While count < 3
MsgBox "count = " & count
count = count + 1
Loop
3-4. ファイル操作(FileSystemObject)
' FileSystemObject: ファイル・フォルダ操作を行うための代表的なCOMオブジェクト
Dim fso, folder
Set fso = CreateObject("Scripting.FileSystemObject")
' フォルダが存在しなければ作成
If Not fso.FolderExists("C:\WorkFolder") Then
fso.CreateFolder("C:\WorkFolder")
End If
' テキストファイルへの書き込み
Dim file
Set file = fso.CreateTextFile("C:\WorkFolder\log.txt", True)
file.WriteLine("処理を実行しました: " & Now())
file.Close
📚 用語解説
CreateObject(COMオブジェクトの生成):VBScriptからWindowsやOfficeアプリの機能を呼び出すための仕組み。CreateObject("Scripting.FileSystemObject")のように文字列でオブジェクトの種類を指定することで、ファイル操作用・Excel操作用など様々な機能を持つオブジェクトを生成できる。この仕組みにより、VBScript単体では実現できない高度な処理も、既存のCOMコンポーネントを呼び出す形で実現していた。
VBScriptでは1行のコードが長くなる場合、行末に半角スペース + アンダースコア( _ )を置くことで次の行に継続できます。このアンダースコアの前のスペースを忘れると構文エラーになる、初心者が引っかかりやすいポイントです。
3-5. Excelを操作する(CreateObjectでOfficeアプリを呼び出す)
' Excelを起動して操作する例
Dim excelApp, workbook, sheet
Set excelApp = CreateObject("Excel.Application")
excelApp.Visible = True ' True にすると画面上にExcelが表示される
Set workbook = excelApp.Workbooks.Add()
Set sheet = workbook.Sheets(1)
sheet.Cells(1, 1).Value = "商品名"
sheet.Cells(1, 2).Value = "価格"
sheet.Cells(2, 1).Value = "ノートPC"
sheet.Cells(2, 2).Value = 98000
workbook.SaveAs "C:\WorkFolder\report.xlsx"
workbook.Close
excelApp.Quit
このように、VBScriptはOfficeアプリを外部から遠隔操作するようなコードを比較的簡単に書けます。「複数のExcelファイルを一括で開いて特定の値を書き込む」「PDFに一括変換する」といった定型作業の自動化に長らく使われてきた理由のひとつです。
3-6. エラー処理(On Error Resume Next)
On Error Resume Next ' エラーが発生しても処理を止めずに次の行へ進む
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
fso.DeleteFile("C:\存在しないファイル.txt")
If Err.Number <> 0 Then
MsgBox "エラーが発生しました: " & Err.Description
Err.Clear
End If
On Error Goto 0 ' エラー処理を元に戻す(以降は通常通りエラーで停止)
3-7. ユーザー入力を受け取る(InputBox)
Dim userInput
userInput = InputBox("お名前を入力してください", "入力フォーム", "ゲスト")
If userInput = "" Then
MsgBox "入力がキャンセルされました"
Else
MsgBox "こんにちは、" & userInput & "さん"
End If
' InputBox(プロンプト文, タイトル, 初期値) の3引数構成
' キャンセルボタンが押されると空文字列が返る
📚 用語解説
On Error Resume Next:VBScriptのエラー処理構文。この行以降、エラーが発生してもプログラムを停止させず、次の行の処理を継続する。他言語のtry-catchのような「エラーの発生箇所を明示的に囲む」構文ではなく、「この行から先は全部エラーを無視する」という粗い制御になるため、エラーの見落としに繋がりやすい点がしばしば指摘される。
04 DEPRECATION なぜVBScriptは非推奨になっているのか Microsoftの公式発表とセキュリティ上の懸念
Microsoftは、VBScriptを段階的に非推奨化し、将来的にWindowsから削除していく方針を公式に発表しています。新規のWindows機能ではデフォルトで無効化される方向に進んでおり、既存のVBScript資産は「いずれ動かなくなる可能性がある」前提での対応が必要です。
4-1. セキュリティ上の懸念
VBScriptが非推奨化される最大の理由はセキュリティリスクです。VBScriptは長年、マルウェア(悪意のあるプログラム)の実行手段として悪用されてきた歴史があります。代表的な例が、2000年に世界中で被害を出したメール添付型ワーム「ILOVEYOU(LOVE LETTERウイルス)」で、これはVBScriptで書かれたマルウェアでした。
こうした背景から、Webブラウザ・メールソフト・Officeアプリの多くが、VBScript(マクロ含む)の自動実行をデフォルトで無効化するようになっています。Internet Explorerも2022年にサポートが終了し、VBScriptがクライアントサイドで動く主要な実行環境が失われました。
4-2. 開発生産性の観点からの限界
セキュリティ面だけでなく、Variant型のみで型安全性が低い、モダンな開発ツール(デバッガ・パッケージ管理)が乏しい、非同期処理やオブジェクト指向の高度な機能が限定的、といった言語仕様としての古さも、後継技術への移行が進む理由です。
VBScript登場
手軽な自動化言語
マルウェア悪用
により警戒強まる
IE終了・
非推奨化発表
PowerShell/Python
等への移行推奨
05 MIGRATION PowerShell・Pythonへの移行の考え方 後継言語の選び方と移行の優先順位
VBScriptの後継として現在推奨されているのは、主にPowerShell(Windows管理・自動化に強い)とPython(汎用性が高く学習リソースも豊富)です。
| 観点 | PowerShell | Python |
|---|---|---|
| Windows標準搭載 | ○ Windowsに標準搭載 | × 別途インストールが必要 |
| 得意分野 | Windowsシステム管理・Office 365連携 | データ処理・Web・AI・幅広い汎用処理 |
| VBScriptからの移行しやすさ | 比較的近い(Windows専用機能を直接呼べる) | やや距離があるが将来性・汎用性で優位 |
| 学習リソースの豊富さ | Windows管理者向けに充実 | 非常に豊富(世界的に利用者が多い) |
社内のログオンスクリプトやファイル操作など、Windows管理に密着した処理はPowerShellへの移行が素直です。一方、データ集計やWebサービス連携など、より汎用的な自動化を見据えるなら、Pythonへの移行も選択肢になります。
「動いている古いVBScriptを今すぐ全部書き換える」必要はありません。まずは①現在稼働中のVBScriptの棚卸し、②セキュリティリスクが高いもの・頻繁に修正が必要なものから優先的に移行、という段階的な進め方が現実的です。
5-1. 同じ処理をVBScriptとPowerShellで書き比べる
「フォルダ内のファイル一覧をテキストファイルに書き出す」という同じ処理を、VBScriptとPowerShellで比較してみます。
' VBScript版
Dim fso, folder, file, outFile
Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder("C:\WorkFolder")
Set outFile = fso.CreateTextFile("C:\WorkFolder\filelist.txt", True)
For Each file In folder.Files
outFile.WriteLine(file.Name)
Next
outFile.Close
' -----------------------------------------
# PowerShell版(同じ処理)
Get-ChildItem "C:\WorkFolder" -File |
Select-Object -ExpandProperty Name |
Out-File "C:\WorkFolder\filelist.txt"
PowerShell版はパイプライン(|)でコマンドを繋げるだけで、VBScript版より大幅に短く書けています。PowerShellはこのように「Windowsのファイル・レジストリ・サービスなどをオブジェクトとして直接操作できる」設計になっており、システム管理タスクにおいてはVBScriptより効率的に書けるケースが多くあります。
📚 用語解説
パイプライン(PowerShell):あるコマンドの実行結果を、そのまま次のコマンドの入力として渡す仕組み。"|"(パイプ)記号で複数のコマンドを繋げて書く。PowerShellではファイルやオブジェクトの情報がテキストではなく構造化されたオブジェクトとしてやり取りされるため、VBScriptで書くと数行かかる処理が1行で完結することが多い。
06 LEGACY RISK 【独自】社内に残る「誰が書いたか分からない」VBScript問題 属人化した自動化スクリプトが抱える経営リスク
VBScriptに限らず、長年運用されてきた企業では「退職した担当者が作った自動化スクリプトが、中身を誰も理解しないまま動き続けている」というケースが少なくありません。これは技術的負債であると同時に、経営リスクでもあります。
こうした状態を放置すると、「動いているから触れない」が「誰も理解していないのでもし止まったら復旧できない」という、より深刻なリスクに変わっていきます。
| リスクレベル | 該当する状態 | 対応の優先度 |
|---|---|---|
| 高 | 機密情報(パスワード等)がスクリプト内に直接記述されている | 即時対応(内容確認・除去) |
| 高 | 担当者不在で、スクリプトの存在自体を誰も把握していない | 早急に棚卸し・影響範囲の確認 |
| 中 | 担当者は在籍しているが、内容を詳細には把握していない | 計画的にドキュメント化・移行 |
| 低 | 担当者が把握しており、影響範囲も限定的 | 通常の運用サイクルの中で順次移行 |
6-1. Claude Codeでレガシースクリプトを解読・移行する
ここで有効なのが、Claude Codeに古いVBScriptファイルを読ませて、処理内容を日本語で説明させるアプローチです。専門知識がなくても「このスクリプトは何をしているのか」を素早く把握でき、移行計画を立てる土台になります。
| やりたいこと | Claude Codeへの指示例 |
|---|---|
| 処理内容の解読 | 「この.vbsファイルの中身を読んで、何をする処理なのか、業務担当者にも分かる言葉で説明して」 |
| PowerShellへの移行 | 「このVBScriptと同じ処理をするPowerShellスクリプトを書いて。動作は変えないこと」 |
| リスク箇所の洗い出し | 「このVBScriptの中に、パスワードなど機密情報がハードコードされていないか確認して」 |
| ドキュメント化 | 「このスクリプトの処理内容・実行タイミング・依存しているファイルパスを一覧表にまとめて」 |
社内の.vbsファイルを
棚卸しする
Claude Codeに
処理内容を解読させる
リスクの高い順に
優先度をつける
PowerShell/Pythonへ
段階的に移行
07 GENAI CASE STUDY 【独自データ】GENAI社内でのレガシー資産・自動化の扱い方 Max 20xプランで、古いスクリプトの棚卸しをどう進めているか
弊社(株式会社GENAI)では、Claude Max 20xプラン(月額$200・約30,000円)を契約し、経営・営業・広告・開発・経理・秘書業務まで社内のあらゆる業務にClaude Codeを組み込んでいます。開発領域では、古いコード・スクリプトの解読や、業務スクリプトの新規作成にも日常的にClaude Codeを活用しています。
| 業務領域 | 主な用途 | 概算の変化(肌感) |
|---|---|---|
| 開発・情シス | 既存スクリプト・システムの処理内容の解読、ドキュメント化 | 都度数時間の短縮 |
| 経理 | 請求書処理・経費仕訳の自動化スクリプト作成 | 月40時間 → 月5時間(肌感) |
| 秘書業務 | 定型作業の自動化スクリプト作成・運用 | 日2時間 → 日15分(肌感) |
上記は弊社の肌感ベースの概算であり、業種・業態・担当者のスキルによって変動します。「完全自動化」ではなく、人間によるレビュー・最終確認を前提とした数値です。
弊社の方針として、「新しく自動化スクリプトを作るとき、担当者が退職しても他の誰かが理解できる状態を保つ」ことを重視しています。Claude Codeに処理内容の説明・コメント追加を任せることで、属人化を防ぎながら自動化を進める運用がしやすくなっています。
また、移行先の選定自体もClaude Codeへの相談材料になります。「Windows管理に閉じた処理ならPowerShell」「将来的にデータ分析やAI活用まで見据えるならPython」といった判断基準も、業務内容を伝えるだけで整理してもらえます。
08 CONCLUSION まとめ VBScriptの要点と、今取るべきアクションを振り返る
VBScriptは長年にわたって企業の業務自動化を支えてきた実績のある技術ですが、セキュリティ・保守性の観点から、今は「棚卸しと移行を検討すべきタイミング」にあります。
弊社では、こうしたレガシー資産の棚卸しから、Claude Codeを活用した新しい自動化基盤への移行まで一貫して支援しています。「昔のスクリプトが何をしているか分からない」「情シス担当が退職して困っている」という方は、お気軽にご相談ください。
レガシースクリプトの棚卸しも、新しい自動化の設計も、AI鬼管理が伴走します
VBScriptに限らず、担当者しか分からない古い自動化資産は、いつか必ず引き継ぎの問題に直面します。
AI鬼管理では、レガシー資産の可視化からClaude Codeを使った業務自動化の再設計まで支援しています。
ここから先の進め方は、大きく2つあります。
自社で回せるようになりたい方は、AI鬼管理でClaude Code/Codexの使い方から業務設計・社内定着まで伴走を受けながら、社内に仕組みを作る道があります。
覚えるより任せたい方は、AI社員AIKATAでこの記事のような定型業務を丸ごと預ける道があります。料金は月30万円の月額定額、追加費用は0円です。
どちらが合うかは、業務量と社内体制次第です。無料相談・無料適合診断で、貴社の場合はどちらが向くかからご相談いただけます。
NEXT STEP
この記事の内容を、あなたのビジネスで
実践してみませんか?
よくある質問
Q. VBScriptとVBA(Excelマクロ)は同じものですか?
A. 文法は似ていますが別物です。VBAはExcel・Word等のOfficeアプリケーションに組み込まれたマクロ言語で、そのアプリ内でのみ動作します。一方VBScriptはOSレベル(Windows Script Host)で動作する独立したスクリプト言語で、Officeアプリがなくても.vbsファイル単体で実行できます。両者は共通のルーツ(Visual Basic)を持つため文法が似ていますが、実行環境と用途が異なります。
Q. VBScriptは今すぐ使えなくなりますか?
A. 2026年9月時点では、多くのWindows環境でVBScriptは依然として動作します。ただしMicrosoftは非推奨化・段階的な機能削減の方針を明示しており、Windowsの機能更新のたびに既定で無効化される範囲が広がっていく可能性があります。「いつか動かなくなる前提」で計画的に移行を検討することが推奨されます。
Q. 自社にVBScriptが残っているかどうか、どう確認すればいいですか?
A. 社内の共有フォルダ・タスクスケジューラ・Active Directoryのグループポリシー(ログオンスクリプト設定)を確認し、拡張子".vbs"のファイルを検索するのが基本です。Windowsのファイル検索機能で"*.vbs"を検索するだけでも、思わぬ場所に残っているスクリプトが見つかることがあります。
Q. VBScriptで書かれたクラシックASPのWebサイトは今どうなっていますか?
A. クラシックASP自体もマイクロソフトの現行の主力技術ではなく、長期間大きな機能追加がされていないレガシー技術です。現在稼働している場合も、多くは保守フェーズにあり、新規開発では推奨されません。セキュリティ更新の観点からも、モダンな技術への移行が望ましいとされています。
Q. VBScriptの代わりにPowerShellを学ぶ場合、難易度はどれくらい違いますか?
A. PowerShellはVBScriptと比べてコマンドレット(動詞-名詞形式のコマンド)という独自の体系を持ち、最初はとっつきにくく感じることがあります。ただしWindows管理タスクに関しては、VBScriptよりも簡潔に書ける処理が多く、Microsoft公式のドキュメントも充実しているため、目的を絞って学べば習得のハードルはそれほど高くありません。
Q. 古いVBScriptの中身が理解できない場合、Claude Codeにどう頼めばいいですか?
A. 該当の.vbsファイルの中身をそのままClaude Codeに渡し、「このスクリプトが何をしているか、実行タイミングや影響範囲も含めて業務担当者にも分かるように説明して」と依頼するのが基本です。さらに「PowerShellに書き換えて」「機密情報がハードコードされていないか確認して」といった具体的な要望を追加すると、そのまま移行作業に使える情報が得られます。
Claude Codeで業務自動化を90日で叩き込む
経営者向けの伴走型パーソナルトレーニング
AI鬼管理/AI社員AIKATAへのお問い合わせ
この記事を読んで気になった方へ。
専門スタッフが、御社に最適な
業務自動化・業務代行プランを無料でご提案します。




