python - 通过 Excel VBA 运行 Python 脚本

标签 python excel vba connection

我在从 Excel VBA 运行 python 脚本时遇到问题。这是 VBA 代码:

Sub RunPython()
    
    Dim objShell As Object
    Dim PythonExe, PythonScript As String
    Set objShell = VBA.CreateObject("Wscript.Shell")
    PythonExe = """C:\Users\carlo\AppData\Local\Microsoft\WindowsApps\python3.exe""" 
    PythonScript = """C:\Users\carlo\Desktop\MSc_Thesis\ML applications\BlackBox\BlackBoxAbsorbers.py"""  
    objShell.Run PythonExe & PythonScript

End Sub

python代码如下。

print("hello")
input("hello, press enter")

当我运行 VBA 时,python 执行器打开但它立即关闭而没有实际执行脚本。换句话说,"hello""hello, press enter" 都不会出现在 python executer 窗口中,该窗口突然关闭。

我确定 python.exe 和 python 脚本的路径是正确的。我用 """""" 都试过了,在这两种情况下都不起作用。显然( super 简单!)如果我直接从 python 执行器运行 python 脚本,它就可以工作。

最佳答案

解决了!!我不明白为什么,但是拆分 objShell.Run PythonExe 和 objShell.Run PythonScript 效果很好!像那样:

Public Sub RunPython()    
    Dim objShell As Object
    Set objShell = VBA.CreateObject("Wscript.Shell")

    Dim PythonExe As String
    PythonExe = """C:\Users\carlo\AppData\Local\Microsoft\WindowsApps\python3.exe""" 

    Dim PythonScript As String
    PythonScript = """C:\Users\carlo\Desktop\MSc_Thesis\ML applications\BlackBox\BlackBoxAbsorbers.py"""  
    
     objShell.Run PythonExe
     objShell.Run PythonScript

End Sub

无论如何谢谢@Pᴇʜ,我会把你的回答评为积极的,因为你一直很友善!!

关于python - 通过 Excel VBA 运行 Python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68312525/

相关文章:

python - 当玩家死亡时退出游戏结束

python - 如何根据相关对象设置 POST 请求的截止日期?

mysql - 使用交替颜色对 Excel 字段中的重复条目进行颜色编码

excel - 如何使用Excel VBA计算一个UTF8字符的字节长度?

python - 尝试在win7上设置selenium/phantomjs的路径

python - Optparse-保留特殊字符

c# - 将两种类型的resx文件中的键和值导出到Excel c#.net

excel - 为 Excel 生成 CSV 文件,如何在值内添加换行符

excel - VBA 错误运行时 13 错误类型不匹配找不到它发生的位置

vba - 如何解决错误的 "spreadsheet locked for editing"问题?