ドラッグドロップ全ファイルループモジュール
2023年12月18日
VBScriptは、Windowos上で動作するのもあって、
ドラッグドロップで入力ファイルをしていできるようにすると使い勝手が良い。
その他にも、引数を指定しない場合はVBScriptがあるフォルダの全ファイルを対象にしたり、
フォルダを指定した場合は、そのフォルダ内の全ファイルを対象にできると便利。
ってなわけで、作ってみることにした。
でも今回はいつもと違う!
Chat GPT4を搭載したBing AI を利用して、作ってみることにした!
ドラッグドロップで入力ファイルをしていできるようにすると使い勝手が良い。
その他にも、引数を指定しない場合はVBScriptがあるフォルダの全ファイルを対象にしたり、
フォルダを指定した場合は、そのフォルダ内の全ファイルを対象にできると便利。
ってなわけで、作ってみることにした。
でも今回はいつもと違う!
Chat GPT4を搭載したBing AI を利用して、作ってみることにした!
Bingに対して入力したプロンプトは以下の4行。
ドラッグドロップで全オブジェクトに対して以下の処理を行うVBScriptのソースコードを生成して。
・フォルダをドロップした場合はドロップした各フォルダ内の全csvファイルを対象にメイン処理を行う
・ファイルをドロップした場合は各ファイルを対象にメイン処理を行う
・指定なしの場合は、そのスクリプトのあるフォルダ内の全csvファイルを対象にメイン処理を行う
気を付けるべきは、
Bingは、文脈を考慮して返事をすること。
一旦~~~のようなプログラムを作成して!と依頼したあとに
別の依頼をしても、最初と同じ答えが返ってきたりする。
なので、新しいお願いをするときは、
「新しいトピック」をクリックすること。
プロンプトを変えて何回か試したところ、
理想的な回答が返ってきたので投稿。
やっているうちにあることに気付いた。。。
それについてはまた次回!!
てなわけで、Bingが返した回答は以下の通り。
## Bing
こんにちは、Bingです。VBScriptでドラッグドロップを使用して、指定された処理を行うソースコードを生成することができます。以下のコードを参考にしてください。
Option Explicit
Dim objFSO, objArgs, strFolder, strFile, strPath, strExtension
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objArgs = WScript.Arguments
If objArgs.Count = 0 Then
strFolder = objFSO.GetParentFolderName(WScript.ScriptFullName)
Else
For Each strPath In objArgs
If objFSO.FolderExists(strPath) Then
ProcessFolder strPath
ElseIf objFSO.FileExists(strPath) Then
ProcessFile strPath
End If
Next
End If
Sub ProcessFolder(strFolderPath)
Dim objFolder, objFile, colFiles
Set objFolder = objFSO.GetFolder(strFolderPath)
Set colFiles = objFolder.Files
For Each objFile In colFiles
ProcessFile objFile.Path
Next
Set colFiles = Nothing
Set objFolder = Nothing
End Sub
Sub ProcessFile(strFilePath)
strExtension = objFSO.GetExtensionName(strFilePath)
If LCase(strExtension) = "csv" Then
' Do something with the file
End If
End Sub
上記のコードは、フォルダまたはファイルをドラッグアンドドロップした場合に、指定された処理を行うVBScriptの例です。フォルダをドロップした場合は、そのフォルダ内の全csvファイルを処理します。ファイルをドロップした場合は、そのファイルを処理します。指定がない場合は、スクリプトのあるフォルダ内の全csvファイルを処理します。このコードを参考に、必要に応じてカスタマイズしてください。
PR
Comment