[PR]
2025年11月04日
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
コマンドプロンプトで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