『VBScript』に限らず、ツールを作ることの楽しみはこんな感じだと思ってます。
コレとコレを毎回やるのめんどくさいなー
このツールを使えば、後は待ってるだけで終わるよ!
私はあの作業から解放されたのだ!!
この世から無駄な作業がなくなるのは嬉しい!
でもね、ツールを作ってると一つ壁にぶち当たるんです。
世の中の作業はそんな単純なものばかりじゃない!
入力したい項目が複数ある場合、どうしようかな・・・とか
ファイルの拡張子によって処理切り替えたいな・・・とかとか
そんな時、ドラッグ&ドロップ(D&D)に対応するやり方を覚えておくと、ツールの幅が広がります!
Call JudgeDDFile
Sub JudgeDDFile
Dim objArgs , objFSO , objFiles , ddFile
Set objArgs = WScript.Arguments
Set objFSO = CreateObject("Scripting.FileSystemObject")
'ファイル数判定
Select Case objArgs.Count
'通常起動
Case 0
MsgBox "入力ファイルをD&Dして下さい"
'通常起動
Case 1
ddFile = WScript.Arguments(0)
Set objFiles = objFSO.GetFile(ddFile)
'ファイル拡張子判定
If objFSO.GetExtensionName(ddFile) = "txt" then
vret = MsgBox(objFiles.name & "を入力として処理します。" , vbokcancel)
If vret = vbok then
'メイン処理を呼び出し
msgbox(objFiles)
Else
MsgBox "中止しました"
End If
Else
MsgBox "txtファイルをD&Dして下さい"
End If
Set objFiles = Nothing
Case Else
MsgBox "1ファイルのみD&Dして下さい"
End Select
Set objArgs = Nothing
Set objFSO = Nothing
WScript.Quit
End Sub
解説
この例では起動時にドラッグ&ドロップ(D&D)されたファイルの数を判定。
通常起動(ダブルクリックなど)ではファイル数が0個なのでメインの処理に行かないです。
次にファイル拡張子を判定しています。
ココは『拡張子毎の振り分け』『想定外のファイルで処理することを予防する』などに使用します。