excel vba调用其他程序
VB调用其他程序
1 使用Shell函数
Shell的语法:Shell(PathName[,WindowStyle])
PathName
为必需参数。类型为String,它指出了要执行的程序名,以及任何需要的参数或命令行变量,也可以包括路径名。
WindowStyle
为可选参数。Integer类型,指定在程序运行时窗口的样式。WindowStyle有以下这些值。
常量 | 值 | 描述 |
---|---|---|
VbHide | 0 | 窗口被隐藏,且焦点会移到隐式窗口。 |
VbNormalFocus | 1 | 窗口具有焦点,且会还原到它原来的大小和位置。 |
VbMinimizedFocus | 2 | 窗口会以一个具有焦点的图标来显示(缺省值)。 |
VbMaximizedFocus | 3 | 窗口是一个具有焦点的最大化窗口。 |
VbNormalNoFocus | 4 | 窗口会被还原到最近使用的大小和位置,而当前活动的窗口仍然保持活动。 |
VbMinimizedNoFocus | 6 | 窗口会以一个图标来显示,而当前活动的窗口仍然保持活动。 |
Dim ActivePath as String
ActivePath = ActiveWorkbook.Path
Shell "python " + ActivePath + "\a.py", vbNormalFocus
Shell "cmd.exe /c del 某个文件"
2 使用Wscript.Shell对象调用程序
Wscript.Shell可以调用程序、操作注册表、管理环境变量等。
Dim WshShell As Object
Dim result As Integer
set WshShell = CreateObject("WScript.Shell")
' 第一个参数要执行的命令,
' 第二个参数是执行窗口显示的设置,默认值为0,即不显示窗口
' 第三个参数是设置是否等待执行返回,默认为False,即不等待返回就往下继续执行。
result = WshShell.Run("python " + ActiveWorkbook.Path + "\main.py", SW_SHOWNA, True)
' 第二个参数和第三个参数都是默认值,即不显示窗口,也不等待执行结束。
WshShell.Run("cmd.exe /c del " + ActiveWorkbook.Path + "\main.py")