首页 > 解决方案 > 如何编写 VBA Shell 脚本以在变量文件上运行 PHP 脚本

问题描述

我正在尝试编写一个 shell 脚本,它将一次在多个文件上运行 PHP 脚本(这需要在 json 文件上使用 exe 文件和 php 文件)。json 文件是在这种情况下唯一可变的文件。

如果我手动使用命令提示符,这是我需要输入的命令才能达到预期的结果 -

C:/Users/myusername/Desktop/XAMPP/php/php.exe transcript.php transcribedfile.json

我的工作表的单元格 G2 包含 json 文件名,这就是我在第二行中激活它的原因。一旦我可以让 shell 脚本工作,我将在一个循环中编写代码,循环遍历 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,但我需要它来识别整个字符串。

任何想法都会受到欢迎。先感谢您。

标签: phpvbaexcelshellcommand-line-arguments

解决方案


以下是我的做法:

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

推荐阅读