Как использовать переменную в команде WScript.Shell? - PullRequest
0 голосов
/ 01 июля 2019

Использование переменной в команде WScript.Shell в Excel VBA. Команда предназначена для объединения нескольких файлов tsv в 1.

Жесткое кодирование пути работает, но я изо всех сил пытаюсь включить это, используя переменную

Sub Combine()
    Dim wsh As Object
    Set wsh = VBA.CreateObject("WScript.Shell")
    Dim waitOnReturn As Boolean: waitOnReturn = True
    Dim windowStyle As Integer: windowStyle = 1
    wsh.Run "cmd /c type C:\Path\SubDir\*.tsv > C:\Path\SubDir\All.txt", windowStyle, waitOnReturn
End Sub

Попытка использовать переменную:

Dim FileName As String
Dim cmd_01 As String
FileName = SubDir
cmd_01 = "type C:\Path\" & FileName & "\*.tsv > C:\Path\" & FileName & "\All.txt"
wsh.Run "cmd /c & cmd_01 & """, windowStyle, waitOnReturn

Я ожидаю, что в итоге получится один файл с именем All.txt, и это работает, когда я жестко кодирую всю команду, но я бы хотел использовать переменную, поскольку у меня есть несколько каталогов для перебора. Я пробовал несколько вариантов вышеописанного, но безрезультатно - кажется, что оно быстро открывает окно командной строки, но фактически не запускает команду для объединения файлов.

1 Ответ

0 голосов
/ 01 июля 2019

Вы ставите один "слишком много в строке

wsh.Run "cmd /c & cmd_01 & """, windowStyle, waitOnReturn

Если вы хотите сделать это таким образом, вы можете проверить вашу строку путем отладки или просто поставить debug.print на одну строку вперед, как это

cmd_01 = "type C:\Path\" & FileName & "\*.tsv > C:\Path\" & FileName & "\All.txt"
debug.print  "cmd /c " & cmd_01 & """
debug.print  "cmd /c " & cmd_01 
wsh.Run "cmd /c " & cmd_01 , windowStyle, waitOnReturn
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...