如何通过使用VBA调用Windows Shell来连接文件

我正在尝试在Excel中编写一些VBA,通过在Windows Shell中执行copymore命令来连接.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”命令不起作用。