试图在Vba上调用python脚本,我是一个新手.我尝试使用py2exe将主脚本转换为exe,然后从VBA(shell)调用它,但主脚本调用其他脚本,因此它变得复杂,我搞砸了(我的exe不起作用).此外,主脚本是一个大文件,我不想修改它.
Bottomline,有没有办法从excel vba调用主脚本,而不将脚本转换为exe文件.
到目前为止,我尝试过:
RetVal = Shell("C:\python27\python.exe " & "import " & "C:\\" & "MainScriptFile")
Run Code Online (Sandbox Code Playgroud)
它启动python.exe但没有做任何其他事情.然后我尝试了:
RetVal = Shell("C:\Windows\System32\cmd.exe " & "python " & "C:\\Python27\\hello.py")
Run Code Online (Sandbox Code Playgroud)
它启动命令提示符,但甚至不启动python.
PS我在论坛上检查了所有相关问题,他们没有解决我的问题.
我试图在不同的工作表上调用一个子,但我得到一个运行时错误消息.
具体来说,我在这些工作表中有两个工作表和多个VBA子.在其中一个VBA项目(比如workbook1.xlsm)中,我有以下代码:
Sub AnalysisTableMacro()
Workbooks("Python solution macro.xlsm").Activate
Application.Run "Python solution macro.xlsm!.PreparetheTables"
End Sub
Run Code Online (Sandbox Code Playgroud)
但是我得到了以下错误.两个工作表上的宏都已启用.在两个工作表中,subs都在Module1中.
无法运行宏'Workbook.xlsm!PrepareTheTables'.宏可能不在>此工作簿中可用,或者可能禁用所有宏.
我也试过Application.Run "Python solution macro.xlsm!Module1.PreparetheTables"但没有奏效.
我试图在另一个python脚本中调用python脚本.目录是不同的.我试过了
import subprocess
subprocess.call("C:\temp\hello2.py", shell=True)
Run Code Online (Sandbox Code Playgroud)
但什么也没得到.这是行不通的.我回顾了很多论坛,但是当两个脚本都在同一个目录上时,它们都是关于调用它的.
我尝试在同一目录中同时使用这两个脚本.在这种情况下,我可以在Python.exe(通过cmd窗口)中运行模型,但不能在IDLE中运行.在IDLE中,我甚至没有收到错误消息.
我真的需要这样做,这样我就无法将其他脚本定义为不同的模块等.我需要在另一个脚本中调用脚本.