【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




ディスカッション
コメント一覧
まだ、コメントがありません