Решил сделать так:
Dim oWSH, oExec
Set oWSH = CreateObject("WScript.Shell")
Set oExec = oWSH.Exec("%COMSPEC% /C chcp 1251 && DIR /B /S C:\h*.exe /A-D && Exit")
MsgBox oExec.StdOut.ReadAll
Но совсем не радует появление CMD окна, можно сделать через метод Run, но я не знаю как извлечь данные без создания промежуточного файла, да и ещё проблема здесь с кодировкой, вроде всё правильно а выводит русские символы в Dos кодировке.
Вот другой вариант, но опять же мешает окно CMD
Set oWSH = WScript.CreateObject("WScript.Shell")
Set oExec = oWSH.Exec("cmd")
With oExec.StdIn
.WriteLine "chcp 1251"
.WriteLine "DIR /B /S C:\h*.exe /A-D"
.WriteLine "Exit"
End With
'MsgBox oExec.StdOut.ReadAll
Line = Split(oExec.StdOut.ReadAll, vbCrlf, -1, 1)
For i = 7 to UBound(Line) -3
MsgBox Line(i)
Next