我在目标中使用下面的宏来获取文件夹中所有文件的列表:
Sub SO()
Const parentFolder As String = "C:\Users\bloggsj\folder\" '// change as required, keep trailing slash
Dim results As String
results = CreateObject("WScript.Shell").Exec("CMD /C DIR """ & parentFolder & "*.*"" /S /B /A:-D").StdOut.ReadAll
Debug.Print results
Ens Sub
但它给了我无效的输出,因为它不会转换Unicode字符,这些字符是我目录中文件名的一部分。在普通的批处理文件中,我可以使用额外的命令' CHCP 1250'更改符号的编码页面。但我无法将其纳入上述宏。我曾尝试过以下几种方式:
results = CreateObject("WScript.Shell").Exec("CMD /C CHCP 1250 DIR """ & parentFolder & "*.*"" /S /B /A:-D").StdOut.ReadAll
和
results = CreateObject("WScript.Shell").Exec("CMD /C ""CHCP 1250"" ""DIR """ & parentFolder & "*.*"" /S /B /A:-D""").StdOut.ReadAll
答案 0 :(得分:1)
<强>&符号强>
command1&amp; command2:用于在一个命令上分隔多个命令 线。 Cmd.exe运行第一个命令,然后运行第二个命令。
CMD /C CHCP 1250 & DIR ....
然而,VBA的目录列表为native support,而VBScript可以使用FileSystemObject
来实现相同目的。