Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用VBA运行.exe_Python_Excel_Exe_Vba - Fatal编程技术网

Python 使用VBA运行.exe

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

因此,我创建了一个.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中搞乱了一些愚蠢的事情

感谢您的帮助


编辑:我知道sub标记为StartExeWithArgument,但不需要参数,只需单击并运行即可。

shell命令正在正确执行。
exe
启动,然后在当前路径中查找
.xlsm
文件。发生的情况是,它无法在当前目录中找到
TLSolver.xlsm
,因此出现错误
IOError:[Errno 2]没有这样的文件或目录:“TLSolver.xlsm”

在这种情况下有三条建议

  • 使用
    ChDir
    将VBA中的目录更改为excel文件所在的目录,然后启动exe

  • 将两个文件放在同一目录中

  • 重写python exe代码(这不属于我的专业知识,因此在这里无法帮助您))以提示用户选择excel文件

  • VBA部分(建议1)


    快速提问。。。为什么会收到错误消息
    没有这样的文件或目录:“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