我的VBA程序如下,
Sub Test()
Dim ret_val As Variant
ChDir ThisWorkbook.path
ret_val = Shell("C:\Python27\python.exe " & ThisWorkbook.path & "\Hello.py", vbNormalFocus)
End Sub
我的python脚本Hello.py
在包含VBA代码的工作簿的同一目录中,如下所示,
for i in range(1000):
print "Hello"
在Excel即时窗口中输入?"C:\Python27\python.exe " & ThisWorkbook.path & "\Hello.py"
,即可获得C:\Python27\python.exe C:\Company\Folder 1\Hello.py
。在这种情况下,如果我从Excel VBA运行Test()
,我会看到一个黑暗提示窗口的闪光,好像它已打开但没有运行python脚本。
但是,如果我将文件夹名称Folder 1
重命名为Folder1
(现在注意目录名称中没有空格),从Excel VBA运行Test()
将显示提示窗口,我可以看到“Hello”写在屏幕上一段时间。
在我看来,在VBA中使用Shell函数时,我不能在任何文件夹名称中包含空格。但是真正导致这个错误的是什么?如何修复它以便我可以使用名称有空格的文件夹?
答案 0 :(得分:0)
这可能有效,它使用Chr(34)在路径名之前和文件名之后产生双引号。
Sub Test()
Dim ret_val As Variant
ChDir ThisWorkbook.path
Dim command As String
command = CHR(34) & "C:\Python27\python.exe" & CHR(34) & " " & CHR(34) & ThisWorkbook.path & "\Hello.py" & CHR(34)
ret_val = Shell(command, vbNormalFocus)
End Sub