こんにちは!日々の業務自動化、本当にお疲れ様です。
マクロの記録や、単体の `.vbs` ファイルを書くところからはじめて、「もうちょっと複雑な処理をまとめたいな」「複数のスクリプトで共通の関数を使いたいのに、毎回コピペするのはダサいし管理が面倒だな」と感じていませんか?
ここをクリアすれば、あなたも単なるスクリプトの利用者から、「プロフェッショナルなWSHアーキテクト」への階段を確実に登ることができますよ。
今回は、VBScriptのポテンシャルを極限まで引き出す隠し扉、`.wsf`(Windows Script Files)ファイルによるマルチスクリプト統合の極意を、優しく、そして深く伝授します。
—
1. なぜ `.vbs` では物足りなくなるのか?
私たちが普段何気なく使っている `.vbs` ファイル。ダブルクリックで動く手軽さは魅力ですが、実務でコードが数百行、数千行と膨れ上がったとき、次のような「壁」にぶつかります。
- コードがカオスになる: 共通関数、ログ出力処理、メインの業務ロジックが1つのファイルに同居し、どこを直していいかわからない。
- JScript(JavaScript)の頭脳を使いたい: VBScriptは強力ですが、正規表現の高度な操作やJSONのネイティブな扱いなどは、JScript(WSH環境で動くJavaScript)のほうが得意な分野もあります。「いいとこ取り」がしたい。
- 設定値のハードコーディング地獄: 接続文字列やファイルパスがコード内に直書きされていて、環境が変わるたびに書き換える羽目になる。
これを一発で解決するのが、XMLベースで記述する `.wsf` ファイル です。
—
2. `.wsf` の正体と、その圧倒的なメリット
`.wsf` は、XMLの構文を使って複数のスクリプトファイルやリソースを1つに束ねるためのコンテナファイルです。
WSFがもたらす3大メリット
1. 外部ファイルのインクルード(部品化): 別ファイルのVBScriptやJScriptを `
同一フォルダに置く共通ライブラリ `logger.vbs`
' logger.vbs
' 業務共通のログ出力モジュール
Sub LogMessage(ByVal appName, ByVal message)
Dim logLine
logLine = "[" & Now & "] [" & appName & "] " & message
' 標準出力への書き込み
WScript.Echo logLine
' 本来ならここでテキストファイルへの追記処理などを実装します
End Sub
---
4. コードの深掘り解説:ここがプロの技
初心者のうちは見慣れないタグが並んでいますが、構造を分解すれば非常にシンプルです。
① `` と ``
1つの `.wsf` ファイルの中に、複数の独立したプログラム(ジョブ)を内包できます。
`cscript app.wsf //job:EnterpriseDataProcessor` のように、コマンドラインから実行するジョブを切り替えることも可能です。
② `` によるインクルード
これこそが `.wsf` の最大の武器です。従来のVBScriptでは、別ファイルを読み込むために `ExecuteGlobal CreateObject("Scripting.FileSystemObject").OpenTextFile("...").ReadAll` のような泥臭いコードを書く必要がありました。
しかし、WSFであれば `src` 属性を指定するだけで、ブラウザの `
