VBScript ( Microsoft Visual Basic Scripting Edition) は、従来の Visual BasicとActive Scriptingをベースに、コンポーネント オブジェクト モデル(COM)を使用してMicrosoft Windows上でスクリプトを作成するための非推奨のプログラミング言語です。コンピュータの管理やコンピューティング環境の多くの側面を自動化するためにシステム管理者に人気があり、 Windows 98以降のすべてのデスクトップ版Microsoft Windowsにデフォルトでインストールされています。[ 1 ] Windows NT 4.0 オプション パック以降のWindows Serverにもインストールされています。[ 2 ]また、Windows CEにもオプションでインストールされています (インストールされているデバイスによって異なります)。
VBScript の実行環境には、Windows Script Host (WSH)、Internet Explorer (IE)、Internet Information Services (IIS) などがあります。[ 3 ]実行環境は、Microsoft Script Control ( msscript.ocx )を介して他のプログラムに組み込むことができます。
2023年10月、マイクロソフトはVBScriptが非推奨になったと発表した。[ 4 ] 2024年5月には、2027年頃にデフォルトで無効化し、その後削除するという複数段階の非推奨スケジュールが発表された。[ 5 ]
VBScript は、1996 年に発表された Microsoft Windows Script Technologies の一部として始まりました。このテクノロジー ( JScriptも含まれていました) は、当初は Web 開発者を対象としていました。わずか 2 年強の間に、VBScript はバージョン 1.0 から 2.0 に進化し、その間に、 1980 年代初頭に最初に開発されたバッチ言語よりも強力な自動化ツールを求めるWindowsシステム管理者からの支持を得ました。[ 6 ] 1996 年 8 月 1 日、 VBScript を含む機能を備えたInternet Explorer がリリースされました。[ 7 ]
バージョン 5.0 では、VBScript の機能が、正規表現、クラス、Withステートメント[ 8 ]、別のスクリプトの実行中に構築されたスクリプト コマンドを評価および実行するための Eval、Execute 、およびExecuteGlobal関数、GetRef を介した関数ポインタ システム[ 9 ] 、および分散 COM (DCOM) サポートなどの新機能によって拡張されました。
バージョン 5.5 では、 VBScript の正規表現クラスにSubMatches [ 10 ]が追加され、スクリプト作成者が式のグループ内のテキストをキャプチャできるようになりました。この機能は JScript では既に利用可能でした。
.NET Frameworkの登場に伴い、スクリプトチームはWeb 開発用のASP.NET内で VBScript の将来的なサポートを実装することを決定し、 [ 11 ]そのため VBScript エンジンの新しいバージョンは開発されないことになった。今後は、バグ修正とセキュリティ強化を担当する Microsoft の維持エンジニアリング チームによってサポートされることになった。VBScript のサポートを終了する計画を発表した後、Microsoft はWindows PowerShellまたはJavaScriptへの移行を提案した。[ 5 ]
Internet Explorerで読み込まれるWebページにおいて、VBScriptはJavaScriptと機能的に類似しています。HTML内のVBScriptコードは、ページのドキュメントオブジェクトモデル(DOM)とやり取りするロジックであり、 HTML単独では実現できない機能を可能にします。しかし、Chrome、Firefox、Operaなどの他のWebブラウザはVBScriptをサポートしていません。そのため、クライアントサイドスクリプトとクロスブラウザ互換性が必要な場合、開発者は通常、幅広いクロスブラウザ互換性を持つJavaScriptを選択します。
VBScriptは、 Active Server Pages (ASP)を介してサーバー側のWebページ機能を実現するために使用されます。ASPエンジンであるasp.dllは、vbscript.dllを呼び出してVBScriptスクリプトを実行します。ASPページに埋め込まれたVBScriptは、<%と%>のコンテキストスイッチで囲まれています。次の例は、現在時刻を24時間形式で表示します。
<% Option Explicit %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><title> VBScript の例</title></head><body><div><%Now() 関数から現在時刻を取得します。コンテキストスイッチ (<%) の後に現れる '=' 記号は省略形です' Response オブジェクトの Write() メソッドを呼び出す場合。Dim timeValue : timeValue = Now %>時刻は24時間形式で、<%=時( timeValue ) %> : <%=分( timeValue ) %> : <%=秒( timeValue ) %>。 </div></body></html>VBScriptは、 Windows Script Host (WSH)を介してオペレーティングシステム上で直接実行できます。通常拡張子 を持つスクリプトファイルは、グラフィカルユーザーインターフェース(GUI)の場合はWscript.exe 、コマンドラインインターフェース(CLI)の場合はCscript.exe.vbsのいずれかを使用して実行できます。
XML に倣ったWindows スクリプト ファイル( WSF) は、複数の VBS ファイルを含めることができ、モジュール式に再利用できる VBScript コードのライブラリです。ファイルには拡張子が付いており、通常のファイルと同様にwscript.exeまたはcscript.exe.wsfを使用して実行できます。.vbs
HTMLアプリケーション(HTA)はHTMLをベースとしたアプリケーションです。ファイル内のHTMLはユーザーインターフェースの生成に使用され、VBScriptなどのスクリプト言語はプログラムロジックに使用されます。ファイルには拡張子が付いており、 mshta.exeを使用して実行できます。.hta
VBScript は、他の COM 対応アプリケーションから呼び出すことができる ActiveX 対応スクリプト クラスである Windows スクリプト コンポーネントでも使用できます。[ 12 ]これらのファイルの拡張子は.wscです。
VBScript言語は、従来のVisual Basicをモデルにしています。[ 13 ]主な特徴は以下のとおりです。
VBScriptでは、「プロシージャ」はコードをより小さなモジュールに分割するための主要な構成要素です。VBScriptでは、代入文で結果を返すことができる関数と、そうでないサブルーチンを区別します。パラメータは位置指定型であり、値渡しまたは参照渡しが可能です。
制御構造には、一般的な反復ループや条件付きループであるDoループ、If-Then-Else文、Case文に加え、ElseIfやネストされた制御構造など、より複雑なバリエーションも含まれる。
コーディングにおける記憶補助として、またもちろん可読性を高めるために、論理値のための定数や、Trueコードのための定数、色値のための定数、改行文字のための定数など、多数の定数があります。FalsevbOKCancelvbYesNoMsgBoxvbBlackvbYellowvbCR
変数はデフォルトでは「VariantCInt 」型ですが、変換関数( 、など)を使用して特定の型(整数、日付など)を強制的に指定することも可能です(場合によっては必要になりますCDate)。
ユーザーとのやり取りは、メッセージと入力のためのシンプルなダイアログボックス形式を提供する関数MsgBoxと 関数によって行われますInputBox。どちらの関数もプロンプトメッセージを表示し、前者は標準的な応答を返し、後者はユーザーが指定したテキストまたは数値を返します。コントロールとのより高度な GUI 操作には、たとえばHTML アプリケーションで、VBScript を HTML と組み合わせて使用できます。Visual Basic やVisual Basic for Applicationsのように、イベント駆動型フォームはサポートされていません。
名前は大文字と小文字を区別しません。ただし、VBScriptのスタイルにおいては、一貫性を保ち、大文字を適切に使用することが推奨されています。
Windows Script Host上で動作するVBScript は、スクリプト言語に共通する多くの機能を提供しますが、Visual Basic 6.0では利用できません。これらの機能には以下が含まれます。
コマンドラインランナーであるCScriptは、以下のオプションを提供します。
ファイルシステム管理、ファイル変更、およびテキストストリーミング操作は、スクリプトランタイムライブラリを使用して実装されていますscrrun.dll。このライブラリは、FileSystemObject、File、TextStreamなどのオブジェクトを提供し、プログラマーがWindowsファイルシステムにアクセスできるようにします。
バイナリ ファイルとメモリの入出力は「ADODB.Stream」クラスによって提供され、このクラスは文字列ビルダー(コストのかかる過剰な文字列連結を避けるため)やバイト配列と文字列の相互変換にも使用できます。データベースへのアクセスはActiveX Data Objects (ADO) を介して可能になり、IIS メタベースは、十分な権限があれば GetObject() 関数を使用して操作できます(サイトや仮想ディレクトリの作成と削除に便利です)。XML ファイルとスキーマは、Microsoft XML ライブラリアプリケーション プログラミング インターフェイス( msxml6.dll、msxml3.dll ) を使用して操作でき、XMLHTTP オブジェクトと ServerXMLHTTP オブジェクト (クラス文字列はそれぞれ「MSXML2.XMLHTTP.6.0」と「MSXML2.ServerXMLHTTP.6.0」) を介して World Wide Web からコンテンツを取得するためにも使用できます。
ActiveX テクノロジーを通じて機能を追加することもできます。セキュリティ上の懸念から、Microsoft は Internet Explorer プロセスで多くの ActiveX コントロールをブラックリストに登録し、脆弱な Microsoft およびサードパーティのコードを無効化するために、毎月の Windows セキュリティ更新プログラムを通じてキルビットを展開しています。 [ 14 ] [ 15 ]
プログラマーは、COM (ActiveX) モジュールによる拡張機能を利用して、スクリプト ホストと VBScript に必要な機能や望ましい機能を具体的に追加できます。たとえば、「VTool」コンポーネントは、多数のダイアログ ウィンドウ、バイナリ ファイル アクセス、その他の機能を追加します。[ 16 ]
マイクロソフトは通常、 VBScript用のIDE(統合開発環境)を提供していませんが、 Microsoft Script Editorは一部のバージョンのMicrosoft Officeに同梱されています。
デバッグ目的であれば、Microsoft Script Debugger は、長年更新されていないツールではあるものの、現在の Windows バージョンでも引き続き使用できます。このツールを使用すると、VBScript コードにブレークポイントを設定できますが、ユーザーインターフェースは非常に使いづらいです。
サードパーティのソースからVBScriptデバッガーが利用可能であり、[ 17 ] [ 18 ]多くのテキストエディタは言語の構文ハイライト機能を提供しています。
実行中にエラーが発生した場合、スクリプトホストはエラーの種類とエラーが発生した行番号を示すメッセージを出力します。
VBScriptは汎用スクリプト言語ですが、特に注目すべき用途がいくつかあります。まず、かつてはMicrosoft環境のシステム管理者の間で広く使われていましたが[ 19 ] 、その後PowerShellに大きく取って代わられました。次に、VBScriptはテスト自動化ツールであるOpenText UFT Oneのスクリプト言語です[ 20 ] 。3つ目の注目すべき用途は、産業用オペレータインターフェースやヒューマンマシンインターフェースなどの組み込みアプリケーションの内部スクリプト言語としてVBScriptが採用されていることです。階層型DBMSであるInterSystems Caché ( MUMPS言語にルーツを持つ)も、格納コードのプログラミング用にVBScriptの実装であるCache BASICをサポートしています[ 21 ] 。
VBScript は、厳密な型付け、拡張されたエラー処理、サブルーチンに可変個のパラメーターを渡す機能など、完全な Visual Basic の便利な機能のいくつかを省略しています。しかし、習得が容易であること、また、VBScript の商標を明記する限り、この言語でコードを実装する人が Microsoft にロイヤリティを支払う必要がないことから、その使用は比較的広く普及しています。Autodesk 、StatSoft、Great Plains Accounting、Visio (後に Microsoft に買収) などの企業が Microsoft からVisual Basic for Applications (VBA) のライセンスを取得した場合、完全な VBA コード作成およびデバッグ環境を自社製品とともに再配布することが許可されます。
Outlook 97のマクロ言語としては、VBAの代わりにVBScriptが使用されています。
VBScriptは、Windows環境における日常的なオフィス業務の自動化や監視に効果的に活用できます。また、ADODB ActiveX Data Objects(ADODB)と連携させることで、効率的なデータベース接続を実現することも可能です。
VBScriptは、マルウェアやウイルスを作成するためにも使用されることがあり、例えばOutlook 97のメール添付ファイルを通じて拡散し、数十億ドルの損害をもたらしたILOVEYOUワームなどが挙げられます。