【问题标题】:Call python from VBA , script does not run从 VBA 调用 python,脚本不运行
【发布时间】:2021-06-17 09:59:38
【问题描述】:

我在 Excel 中有一个输入文件,用于 Python 脚本solver.py。当我运行 Python 脚本时,输出会打印在不同的 .xlsx 文件中。我想直接从输入文件中调用 python 脚本。我使用以下代码:

Dim objShell As Object
Dim PythonExe, PythonScript As String
Set objShell = VBA.CreateObject("Wscript.Shell")   

PythonExe = "C:*PATH*\Anaconda3\python.exe"
PythonScript = "C:*OTHERPATH*\solver.py"

objShell.Exec PythonExe & " " & PythonScript

ActiveWorkbook.UpdateLink Name:= _
        "C:*OTHERPATH*\output.xlsx", Type:= _
        xlExcelLinks

最后一行无关紧要,但是当我手动更改输出文件并调用代码时,值会更新。所以我确信这段代码可以完全运行。但是,solver.py 永远不会被调用。我看到黑屏闪了一下,但就是这样,没有进行任何计算。

为什么没有调用solver.py?由于我没有收到错误消息,有什么方法可以检查出现了什么问题?

【问题讨论】:

  • 您确定该用户有权访问“C:”驱动器下的路径吗?
  • @MaciejLos 这些是我自己的文件。我可以手动打开 python.exe。带有 VBA 代码的文件 solver.py、output.xlsx 和 input.xslx 位于同一文件夹中。所以我很确定访问不是问题?
  • 我建议在您的 VBA 代码中添加错误处理程序以找出导致问题的原因。

标签: python excel vba shell


【解决方案1】:

自己找到了答案。我在命令提示符下运行了以下内容:

"C:*PATH*\Anaconda3\python.exe" "C:*OTHERPATH*\solver.py" 

我发现导入 pandas 存在问题,因为 numpy 没有正确的版本。从 Spyder 内部运行没有这个问题。重新安装 pandas 和 numpy 解决了我的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-09-29
    • 2012-11-15
    • 1970-01-01
    • 2013-10-24
    • 1970-01-01
    相关资源
    最近更新 更多