VBScriptを「ドラッグ&ドロップ」で覚醒させる。現場で差がつく自動化の極意
こんにちは。現場の自動化を長年見守ってきたエンジニアです。
皆さんは「VBScript」と聞くと、古臭い、あるいは難しそうだと感じていませんか?
実はVBScriptは、「環境構築不要で、今すぐ業務を楽にできる最強の武器」です。特に、デスクトップ上のアイコンにファイルをポンと投げるだけで処理が始まる「ドラッグ&ドロップ対応ツール」を作れるようになると、あなたの作業効率は劇的に変わります。
今日は、その最初の一歩を最高にスマートに踏み出すための「知恵」を伝授します。
—
1. なぜ「ドラッグ&ドロップ」なのか?
プログラムを実行するたびにファイルパスを入力するのは苦痛ですよね。
VBScriptの真骨頂は、「WindowsのGUIと直接対話できること」にあります。VBScriptのアイコンにファイルを重ねると、OSがその「ファイルパス」を引数(Arguments)としてスクリプトに渡してくれるのです。
これを利用すれば、難しい画面設計なしで、「ファイルを投げるだけの超高速処理ツール」が完成します。
—
2. 準備するもの:たった2つのオブジェクト
VBScriptでファイル操作を行うには、以下の2つのオブジェクトを使いこなすことが全てです。
- `WScript.Arguments`: ドロップされたファイルを受け取る窓口。
- `Scripting.FileSystemObject (FSO)`: ファイルを読み書き・移動・取得するための最強のツールキット。
—
3. 実践:ドラッグ&ドロップでファイル情報を表示する
まずは、ドロップされたファイルの名前とサイズを取得するコードを見てみましょう。メモ帳を開いて、以下のコードをコピーし、拡張子を `.vbs` にして保存してください。
‘ — ドラッグ&ドロップ対応の基本テンプレート —
‘ 1. ファイルがドロップされたかチェック
If WScript.Arguments.Count = 0 Then
MsgBox “ファイルをこのスクリプトにドラッグ&ドロップしてください。”, vbExclamation, “エラー”
WScript.Quit
End If
‘ 2. FSOを召喚 (これがないとファイル操作は始まりません)
Set objFSO = CreateObject(“Scripting.FileSystemObject”)
‘ 3. ドロップされたファイルパスを取得
strFilePath = WScript.Arguments(0)
‘ 4. ファイルオブジェクトを取得して情報を抽出
Set objFile = objFSO.GetFile(strFilePath)
‘ 5. 結果を報告
strMsg = “ファイル名: ” & objFile.Name & vbCrLf & _
“サイズ: ” & objFile.Size & ” bytes” & vbCrLf & _
“作成日: ” & objFile.DateCreated
MsgBox strMsg, vbInformation, “処理完了”
‘ 6. 後片付け (メモリ解放の癖をつけるのがプロの流儀です)
Set objFile = Nothing
Set objFSO = Nothing
このコードの「賢いポイント」
- `WScript.Arguments.Count`: ここで「ファイルがちゃんと投げられたか」を確認します。これがないと、ダブルクリックで起動した時にエラーで落ちてしまいます。
- `CreateObject(“Scripting.FileSystemObject”)`: これがFSOの入り口です。これを覚えるだけで、ファイルのコピー・削除・リネームが自由自在になります。
- `Set … = Nothing`: プログラム終了時に明示的にメモリを解放する。これができると、システムに負荷をかけない「行儀の良いスクリプト」になります。
—
4. 初心者が陥りやすい「罠」と対策
現場で見かける「動かない!」というケースの多くはこれです。
- 日本語のファイル名で化ける
- VBScriptの文字コードは「Shift-JIS」が基本です。もしエラーが出るなら、メモ帳で保存する際に「名前を付けて保存」から、文字コードを「ANSI」に指定してください。
- 権限の問題
- 特定のフォルダ(Cドライブ直下など)への書き込みは制限されている場合があります。まずはデスクトップで試すのが定石です。
- パスのスペース問題
- パスにスペースが含まれている場合、`WScript.Arguments` を使う方式ならOSが自動でダブルクォーテーションで囲んでくれるので安心です。
—
5. 次のステップへ
このテンプレートをマスターすれば、次は以下のような機能を追加できます。
1. 自動リネーム: 日付をファイル名の先頭に付ける。
2. 自動振り分け: ファイルの拡張子を見て、フォルダ分けを行う。
3. CSVログ出力: 処理したファイルの一覧をテキストに記録する。
VBScriptは「古い言語」と言われることもありますが、「OSの深部にアクセスして、手作業を瞬時に自動化する」という点において、これほど手軽で強力な言語は他にありません。
まずはこのコードをデスクトップに置いて、ファイルを投げ込むところから始めてみてください。そこから先は、あなたの創造力次第で、どんな業務も自動化できますよ。
応援しています。困ったことがあれば、またいつでも聞きに来てくださいね。
