如何通过使用VBA调用Windows Shell来连接文件
我正在尝试在Excel中编写一些VBA,通过在Windows Shell中执行copy
和more
命令来连接.csv文件。
这段代码成功地创build了一个空文件concat_target.txt
(其他的文件将被连接在一起):
Shell ("cmd.exe copy /b NUL " & """\\path\to\network\folder\concat_target.txt""")
但是,此代码没有将file_1.txt
保存为file_1.concat_temp
(跳过标头)的效果:
Shell ("cmd.exe more +1 " & """\\path\to\network\folder\file_1.txt""" & " > " & """\\path\to\network\folder\file_1.concat_temp""")
实际上,每次调用more
变化,我已经尝试只是popup一个控制台(保持打开),而copy
的调用不会。 UNC的networkingpath已经诅咒了它的空间。
更新:
事实certificate,将more
命令/c
标志添加技巧(虽然它似乎没有影响copy
的调用)。 所以这段代码正在达到预期的效果:
Shell ("cmd.exe /c more +1 " & """\\path\to\network\folder\file_1.txt""" & " > " & """\\path\to\network\folder\file_1.concat_temp""")
一旦完成,我将发布完整的后代解决scheme。
我不知道你为什么使用“更多”,但我会使用其他方法:
Shell ("cmd.exe /c type ""\\path\to\network\folder\file_1.txt"" >> ""\\path\to\network\folder\file_1.concat_temp""")
笔记:
- 用'>'redirect将覆盖文件,丢失以前的内容
- 用'>>'redirect将附加文件(连接)
- 如果它们都是文本,则不需要将string中的每个元素都与“&”分开(但是我想你已经知道了)
- 不需要先创build一个空文件。
更新:
OP正在使用'more'来排除.csv表格标题,因为我之前没有明白。 所以在这种情况下,“types”命令不起作用。