Я пытаюсь выполнить команду в командной строке с помощью Shell Script в VBA Excel. Когда я запускаю эту команду в командной строке, она работает, печатая номер в качестве вывода. Но когда я вызываю ту же команду в скрипте, она не отображает этот номер в окне сообщения.Вызов командной строки и выполнение команды через оболочку Exec в VBA
Sub Button6_Click()
Dim oShell As Object
Dim objExecObject As Object
Set oShell = CreateObject("WScript.Shell")
Set objExecObject = oShell.Exec("cmd /c convert test2.jpg -fill black +opaque white -fill white -opaque white -print %[fx:w*h*mean]")
MsgBox (objExecObject.StdOut.ReadAll)
End Sub
Я думаю, что проблема связана с аргументами в функции Exec, поскольку существует несколько слов. Поэтому я попробовал следующее, объединив строку, как показано. Но это тоже не работает.
Dim command As String
command = "convert test2.jpg -fill black +opaque white -fill white -opaque white -print %[fx:w*h*mean] null:"
Set objExecObject = oShell.Exec("cmd /c " & command)
Кажется, что нет ошибки времени выполнения, и окно сообщения всегда возвращается пустым без печати номера. FOR CLARITY, команда convert - это функция, предоставляемая ImageMagick.
Пожалуйста, расскажите, как я могу распечатать команду «Запустить команду» в командной строке и распечатать вывод командной строки в окне сообщения.
Большое спасибо.
Это сработало. Set objExecObject = oShell.Exec ("cmd/c convert test2.jpg -fill black + opaque white -fill white -opaque white -print% [fx: w * h * mean] null:") Нуль в конце команды была проблема. Также убедитесь, что путь к файлу является абсолютным, что в моем случае не было проблемой. – user2048724