Я пытаюсь написать сценарий оболочки, который будет запускать сценарий PHP для нескольких файлов одновременно (это требует использования exe-файла и php-файла в json-файле). Файл json является единственным, который является переменным в этой ситуации.
Если бы я использовал командную строку вручную, вот команда, которую мне нужно было бы ввести для достижения желаемого результата:
C:/Users/myusername/Desktop/XAMPP/php/php.exe transcript.php transcribedfile.json
Ячейка G2 моего листа содержит имя файла json, поэтому я активировал его во второй строке. Как только я смогу заставить скрипт оболочки работать, я буду кодировать цикл, который будет перебирать все значения в столбце G, начиная с G2, пока значение ActiveCell не будет равно «».
Вот что я попробовал
Sub Shell()
Range("G2").Activate
Dim strProgramName As String
Dim strArgument As String
strProgramName = "C:\Users\myusername\Desktop\XAMPP\php\php.exe transcript.php " & ActiveCell.Value
strArgument = "/G"
Call Shell("""" & strProgramName & """ """ & strArgument & """", vbNormalFocus)
End Sub
Когда я запускаю подпрограмму, я получаю ошибку «Файл не найден». Я протестировал strProgramName и обнаружил, что могу запустить php.exe, если в тот момент я обрежу код, но мне нужно, чтобы он распознал всю строку.
Любые идеи будут приветствоваться. Заранее спасибо.
Вот как я это сделаю:
Const PHP_PATH As String = "C:\Users\myusername\Desktop\XAMPP\php\"Dim strProg As Variant
strProg = """{pth}php.exe"" ""{pth}transcript.php"" ""{pth}" & _
Range("G2").Value & """ \G"
strProg = Replace(strProg, "{pth}", PHP_PATH)
Debug.Print strProg '<< pass this to Shell
Других решений пока нет …