未能将python脚本返回的数组分配给VBA中的变量

2024-09-30 06:20:38 发布

您现在位置:Python中文网/ 问答频道 /正文

当我在bash上执行这个python脚本时,这就是我收到的,这是非常好的。你知道吗

ans=$(python getIndividualCurrentPrice.py 1113 0001 0293 0004 1972 0005 0003 0941)

echo $ans [u'68.00', u'110.90', u'18.60', u'51.80', u'25.50', u'73.15', u'15.88', u'110.10']

但是,当我试图通过VBA执行python脚本时,我在VBA中就是这样做的:

RetVal = Shell("C:\Python27\python.exe C:\Python27\getIndividualCurrentPrice.py 1113 0001 0293 0004 1972 0005 0003 0941" )

MsgBox(RetVal)

10980

更新: 我设法在VBA中执行python脚本,现在没有任何错误,但是返回值是10980一个随机数,这没有意义。有趣的是我可以看到python.exe并在那里显示了正确的结果。但是返回的结果从未存储在VBA变量RetVal中。**这里怎么了?**你知道吗

旁注:我尝试了MsgBox(Shell("echo $HOME")),但得到了一个值26988,这一点意义都没有。我该怎么办?你知道吗


Tags: pyecho脚本bash错误shellvbaexe
1条回答
网友
1楼 · 发布于 2024-09-30 06:20:38

我认为Shell()返回的是进程ID,而不是标准输出。你知道吗

我不知道你在纯VBA中是怎么做的。如果您在Windows计算机上,则可以使用VBScript的Windows脚本主机。只需确保在VBA项目中包含对Windows脚本宿主对象模型的引用(如果没有执行此类操作,请在VBE的“工具”菜单项下)。下面的代码演示了如何将标准输出的输出捕获到字符串变量。我编写了一个简单的.py脚本文件来计算阶乘。然后:

Sub Test()
    Dim ws As New WshShell
    Dim exec As WshExec
    Dim output As String
    Set exec = ws.exec("python C:/programs/factorial.py 10")
    output = exec.StdOut.ReadAll
    MsgBox output 'prints 3628800
End Sub

相关问题 更多 >

    热门问题