Python 使用VBA运行.exe
因此,我创建了一个.exe文件(tlsolver.exe)以使用VBA(tlsolver.xlsm)运行。当我启动.exe时,它运行一些计算,输出一个csv文件,然后我使用VBA将数据复制到我的excel工作表中 这是我正在使用的VBA代码:Python 使用VBA运行.exe,python,excel,exe,vba,Python,Excel,Exe,Vba,因此,我创建了一个.exe文件(tlsolver.exe)以使用VBA(tlsolver.xlsm)运行。当我启动.exe时,它运行一些计算,输出一个csv文件,然后我使用VBA将数据复制到我的excel工作表中 这是我正在使用的VBA代码: Public Sub StartExeWithArgument() Dim strProgramName As String ActiveWorkbook.Save strProgramName = "C:\Users\My.Na
Public Sub StartExeWithArgument()
Dim strProgramName As String
ActiveWorkbook.Save
strProgramName = "C:\Users\My.Name\Desktop\Python\Tagless\tlsolver.exe"
Call Shell("""" & strProgramName & """", vbNormalFocus)
End Sub
当我运行宏时,控制台窗口会弹出,然后快速关闭。我设法在关闭前看到此错误:
IOError: [Errno 2] No such file or directory: 'TLSolver.xlsm'
我知道,当我定期双击文件时,.exe工作得非常好,所以我倾向于认为我在VBA中搞乱了一些愚蠢的事情
感谢您的帮助
编辑:我知道sub标记为StartExeWithArgument,但不需要参数,只需单击并运行即可。shell命令正在正确执行。
exe
启动,然后在当前路径中查找.xlsm
文件。发生的情况是,它无法在当前目录中找到TLSolver.xlsm
,因此出现错误IOError:[Errno 2]没有这样的文件或目录:“TLSolver.xlsm”
在这种情况下有三条建议
ChDir
将VBA中的目录更改为excel文件所在的目录,然后启动exe或快速提问。。。为什么会收到错误消息
没有这样的文件或目录:“TLSolver.xlsm”
为什么.xlsm
?是不是应该是.exe
?让我们来讨论一下。聊天后讨论:exe是从VBA正确启动的。exe是使用python创建的,无法从.xlsm文件中读取。真棒:)很抱歉花了这么长时间。事实上,我在开始时误读了错误消息。碰巧有同样的问题,我修改了VBA代码,但仍然不起作用。。。知道为什么吗?如果我直接运行.exe,那么它可以读取xlsm文件…@ILOVERCP3:exe的路径中是否有空格?@ILOVERCP3:Yup。你需要在上面加上双引号:)@ilovep3:该死。。。这就是我退后的地方:D如果你做谷歌搜索,你会找到activedirectory路径的语法吗?或者也许会有帮助?不确定:P
Public Sub StartExeWithArgument()
Dim strProgramName As String
Dim xlFilePath As String
'~~> Path of the excel file. Change as applicable
xlFilePath = "C:\Temp"
ActiveWorkbook.Save
'~~> Change directory
ChDir xlFilePath
strProgramName = "C:\Users\My.Name\Desktop\Python\Tagless\tlsolver.exe"
Call Shell("""" & strProgramName & """", vbNormalFocus)
End Sub