忍者ブログ

コマンドプロンプトで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文字表示する。すげー見づらい。。。

以下ソース。

 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
  Vodafone絵文字 i-mode絵文字 Ezweb絵文字