我正在尝试在Excel中编写一些VBA,它将通过在Windows Shell中执行data.table
和copy
命令来连接.csv文件。
此代码成功创建了一个空文件more
(其他文件将连接到其中):
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
的调用却没有。 UNC的网络路径诅咒了它的空间。
更新
事实证明,向copy
命令添加/c
标志可以解决问题(虽然它似乎对more
的调用没有影响)。所以这段代码具有预期的效果:
copy
一旦完成,我将为后代发布完整的解决方案。
答案 0 :(得分:0)
我不知道你为什么使用'更多',但我会使用其他方法:
Shell ("cmd.exe /c type ""\\path\to\network\folder\file_1.txt"" >> ""\\path\to\network\folder\file_1.concat_temp""")
注意:
<强>更新强>
OP正在使用'more'来排除.csv表头,因为我之前没有理解过。 所以'type'命令在这种情况下不起作用。