コマンドプロンプトでDIRコマンドを実行するマクロ
2020年02月13日
最近CMDのDIRに凝ってます。
普通にマクロ組むより圧倒的に早い。ただ使いづらい。
前回は、DIRコマンドの結果を出力したファイルを取り込んで
解析するマクロを作ったものの、
いちいちファイル指定するの面倒なのでまとめることに。
ひとまず今回は、ファイル出力するまで。
例によって今回もoffice TANAKAさんのHPのお世話になりました。
http://officetanaka.net/excel/vba/tips/tips27.htm
解析したフォルダのひとつしたの階層に本ブックを保存して
モジュールを実行。
パスについては、thisworkbook.pathで指定しているので、
カスタマイズすればOK。
CMDのコマンドについてはモジュール化したので、
引数にコマンドを入れればOK
ダブルコーテーションの中でダブルコーテーションの入力は
2つ重ねることで1文字表示する。すげー見づらい。。。
以下ソース。
普通にマクロ組むより圧倒的に早い。ただ使いづらい。
前回は、DIRコマンドの結果を出力したファイルを取り込んで
解析するマクロを作ったものの、
いちいちファイル指定するの面倒なのでまとめることに。
ひとまず今回は、ファイル出力するまで。
例によって今回もoffice TANAKAさんのHPのお世話になりました。
http://officetanaka.net/excel/vba/tips/tips27.htm
解析したフォルダのひとつしたの階層に本ブックを保存して
モジュールを実行。
パスについては、thisworkbook.pathで指定しているので、
カスタマイズすればOK。
CMDのコマンドについてはモジュール化したので、
引数にコマンドを入れればOK
ダブルコーテーションの中でダブルコーテーションの入力は
2つ重ねることで1文字表示する。すげー見づらい。。。
以下ソース。
Sub 上のフォルダをDIR解析()
'CMD で DIRコマンド
'ターゲットフォルダはひとつ上の階層
'txtファイルはここの階層に出力
'出力したテキストを自動的に取り込み
Dim txtPath As String: txtPath = ThisWorkbook.Path 'ここのフォルダパス
Dim yPos As Long: yPos = InStrRev(txtPath, "\")
Dim tarPath As String: tarPath = Left(txtPath, yPos - 1) '対象フォルダパス
Dim txtFulName As String: txtFulName = txtPath & "\" & "Dirリスト.txt"
Dim sCmd As String
sCmd = "Dir """ & tarPath & """ /S /A-D > """ & txtFulName & """ " 'ファイルとDir 指定できてない
Call ExcuteCommand_cmd(sCmd)
'Stop
End Sub
Private Sub ExcuteCommand_cmd(sCmd As String)
Dim WSH, wExec, Result As String
Set WSH = CreateObject("WScript.Shell") ''(1)WSHへの参照を作ります
Set wExec = WSH.Exec("%ComSpec% /c " & sCmd) ''(3)Execメソッドを実行
Do While wExec.Status = 0 ''(4)ループで完了を待ち
DoEvents
Loop
Set wExec = Nothing
Set WSH = Nothing
End Sub
PR
Comment