因此,我创建了一个.exe文件(tlsolver.exe)以使用VBA(TLSolver.xlsm)运行。当我启动.exe时,它将运行一些计算,吐出一个csv文件,然后使用VBA将数据复制到我的Excel工作表中。
这是我正在使用的VBA代码:
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中搞砸了一些愚蠢的东西。
任何帮助表示赞赏!
编辑:我知道该子项被标记为StartExeWithArgument,但是没有必需的参数,只需单击并运行。
最佳答案
shell命令正在正确执行。 exe
启动,然后在当前路径中查找.xlsm
文件。发生的情况是它无法在当前目录中找到TLSolver.xlsm
,因此错误IOError: [Errno 2] No such file or directory: 'TLSolver.xlsm'
在这种情况下的三个建议。
使用ChDir
将VBA中的目录更改为excel文件所在的目录,然后启动exe或
将两个文件放在同一目录中。要么
重写python exe代码(这是我的专长,所以在这里不能为您提供帮助)以提示用户选择excel文件。
VBA PART(建议1)
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
关于python - 使用VBA运行.exe,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27135803/