【ExcelVBA】サブフォルダを含めたフォルダ名の一覧出力(WScript.Shell)
非推奨)です。
WScript.Shell をわざわざ使うのは実用的ではありませんし、Norton先生はマルウェアと判断してスクリプトを実行させてくれません(^-^;
なので、WScript.Shell を使わない一般的な方法の、こちら(推奨) をおすすめします。
◆出力結果の例◆
※6行目にダブルクォートが左右にそれぞれ3個あるのは、スペース付きフォルダ名に対応させるためです。
※6行目にダブルクォートが左右にそれぞれ3個あるのは、スペース付きフォルダ名に対応させるためです。
※2回目実行は、メモリーに前回の記憶が残っていればストリーム形式よりDOS窓の閉じるスピードは早めです。
※6行目にダブルクォートが左右にそれぞれ3個あるのは、スペース付きフォルダ名に対応させるためです。
7行目の dirコマンドからオプション /AD を取り除くと、サブフォルダ内のファイル名を絶対パスで出力します。
サブフォルダを含めたフォルダ名の一覧出力をする、サンプルマクロ(
WScript.Shell をわざわざ使うのは実用的ではありませんし、Norton先生はマルウェアと判断してスクリプトを実行させてくれません(^-^;
なので、WScript.Shell を使わない一般的な方法の、こちら(推奨) をおすすめします。
◆出力結果の例◆
E:\opencv\opencv331\sources\apps\annotation
E:\opencv\opencv331\sources\apps\createsamples
E:\opencv\opencv331\sources\apps\interactive-calibration
E:\opencv\opencv331\sources\apps\traincascade
E:\opencv\opencv331\sources\apps\version
E:\opencv\opencv331\sources\apps\visualisation
E:\opencv\opencv331\sources\apps\createsamples
E:\opencv\opencv331\sources\apps\interactive-calibration
E:\opencv\opencv331\sources\apps\traincascade
E:\opencv\opencv331\sources\apps\version
E:\opencv\opencv331\sources\apps\visualisation
イミディエイト画面に一括出力
Sub Sample() Dim DoSPath As String Dim DoSCmd As String DoSPath = """E:\Sample and Result""" DoSCmd = "dir /S /B /AD " & DoSPath Dim oWshShell As Variant Dim oExec As Variant Dim DoSResult As String Dim DoSLine As Variant Set oWshShell = CreateObject("WScript.Shell") Set oExec = oWshShell.Exec("%ComSpec% /c " & DoSCmd) DoSResult = oExec.stdout.ReadAll Debug.Print DoSResult Set oExec = Nothing Set oWshShell = Nothing End Sub※6行目にフォルダパスを記入します。
※6行目にダブルクォートが左右にそれぞれ3個あるのは、スペース付きフォルダ名に対応させるためです。
イミディエイト画面に一行ずつ出力(ストリーム形式)
※メモリーの消費に優しいけど、出力処理が終わるまでDOS窓が開き続けます。Sub Sample() Dim DoSPath As String Dim DoSCmd As String DoSPath = """E:\Sample and Result""" DoSCmd = "dir /AD /S /B " & DoSPath Dim oWshShell As Variant Dim oExec As Variant Dim DoSResult As String Dim DoSLine As Variant Set oWshShell = CreateObject("WScript.Shell") Set oExec = oWshShell.Exec("%ComSpec% /c " & DoSCmd) While Not oExec.stdout.AtEndOfStream Debug.Print oExec.stdout.readline Wend Set oExec = Nothing Set oWshShell = Nothing End Sub※6行目にフォルダパスを記入します。
※6行目にダブルクォートが左右にそれぞれ3個あるのは、スペース付きフォルダ名に対応させるためです。
イミディエイト画面に一行ずつ出力
※初回実行は、DOS窓が閉じるまで時間がかかります。※2回目実行は、メモリーに前回の記憶が残っていればストリーム形式よりDOS窓の閉じるスピードは早めです。
Sub Sample() Dim DoSPath As String Dim DoSCmd As String DoSPath = """E:\Sample and Result""" DoSCmd = "dir /S /B /AD " & DoSPath Dim oWshShell As Variant Dim oExec As Variant Dim DoSResult As String Dim DoSLine As Variant Set oWshShell = CreateObject("WScript.Shell") Set oExec = oWshShell.Exec("%ComSpec% /c " & DoSCmd) DoSResult = oExec.stdout.readall For Each DoSLine In Split(DoSResult, vbCrLf) Debug.Print DoSLine Next Set oExec = Nothing Set oWshShell = Nothing End Sub※6行目にフォルダパスを記入します。
※6行目にダブルクォートが左右にそれぞれ3個あるのは、スペース付きフォルダ名に対応させるためです。
7行目の dirコマンドからオプション /AD を取り除くと、サブフォルダ内のファイル名を絶対パスで出力します。
サブフォルダ内のファイル名を絶対パスで出力
DoSCmd = "dir /S /B " & DoSPath
ディスカッション
コメント一覧
まだ、コメントがありません