こんにちは、くのへ@MasazaneKunoheです。
以前、VBS(VBScript)を紹介致しました。その記事はこちら。
VBSはファイルをドラッグアンドドロップした時に動作するものも作れます。
今日は、「ドラッグアンドドロップVBS」をご紹介します。
ドラッグアンドドロップVBSの作り方
ドラッグアンドドロップVBSを作るためには、WSript.argumentsを使います。
超シンプルな次のコードのVBSを作って動かしてみましょう。
Option Explicit
MsgBox WScript.Arguments.Item(0)
このVBSにドラッグアンドドロップしてみましょう。(下記動画参照)
ドラッグアンドドロップしたファイルのアドレスが表示されましたね。
そう、WScript.argumentsを使うと、ドラッグアンドドロップしたファイルのフルパスを取得できるのです。
複数のファイルをドラッグアンドドロップすると、次のような関係でいずれもWScript.argumentsの中にフルパスが格納されます。
1番目のファイル ⇒ WScript.arguments(0)
2番目のファイル ⇒ WScript.arguments(1)
3番目のファイル ⇒ WScript.arguments(2)
・・・
WScript.argumentsはいわゆる”コレクションオブジェクト”なので、最初のサンプルコードを次のようにForEachを使って書き換えることで、ドラッグアンドドロップされたすべてのファイルを処理できます。
Option Explicit
Dim arg
For Each arg in Wscript.Arguments
MsgBox arg
Next
ドラッグアンドドロップでWord→PDF化
こちらのリンク先にてWord⇒PDF化のドラッグアンドドロップVBSが紹介されています。(もりさんのブログ)
とても便利なVBSですのでこの記事は必見です。
ファイル名に日付を付けてリネームするVBS
Twitterで私が尊敬する方の一人「reimeさん」がドラッグアンドドロップしたファイルをリネーム(:ファイル名に日付を追加)するVBSをご紹介されていました。
このツイートでご紹介頂いているコードはこちらです。やはりWScript.Argumentsを使っていますね~
Option Explicit
Call Main
Sub Main()
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
Dim arg
For Each arg In WScript.Arguments
Dim f
Set f = fso.GetFile(arg)
Dim newName
newName = fso.GetBaseName(f.Name) & "_" & CreateDateTimeString(Now) & "." & fso.GetExtensionName(f.Name)
f.Name = newName
Next
End Sub
Function CreateDateTimeString(dt)
CreateDateTimeString = Replace(Replace(Replace(dt,"/","-"),":","-")," ","_")
End Function
FSOを上手く使ってファイル名に日付を追加してますね~
今日は「ドラッグアンドドロップVBS」を御紹介致しました。
アイディア次第で色んな便利なものを作れますよ!
ではまた別の記事で~
🦅バサバサ~