通过Excel/VBA运行Python脚本

2024-10-01 09:28:21 发布

您现在位置:Python中文网/ 问答频道 /正文

多年来我一直在努力寻找解决这个问题的办法。我有一些python脚本需要定期更新,希望能够使用宏来完成这项工作。现在我双击这些文件,它们通过Shell执行,没有问题。在

Sub RunPyScript()

Dim Ret_Val As Variant
Dim command As String

command = Chr(34) & "C:\Users\Jon Doe\python.exe" & Chr(34) & " " & Chr(34) & "C:\Users\Jon Doe\" & "\Roto.py" & Chr(34)
Ret_Val = Shell(command, vbNormalFocus)

End Sub

当我试图运行上面的宏时,它看起来会像双击时一样运行,但是Shell在脚本执行之前退出(我认为这是问题所在,不是肯定的)。如果有人能帮我,我真的很感激。在


Tags: 文件脚本asvalshelluserscommandret
1条回答
网友
1楼 · 发布于 2024-10-01 09:28:21
Dim objShell
Dim command as String       'use this declaration type for VBA (Access/Excel)
'Dim command                 'use this declaration type for VBS (Script), instead of the direct declaration like as "As String"

command = Chr(34) & "C:\Users\John Doe\python.exe" & Chr(34) & " " & Chr(34) & "C:\Users\John Doe\" & "\roto.py" & Chr(34)
Set objShell = CreateObject("WScript.Shell")

objShell.Run command, 1, True

'Settings for WindowStyle:
'     0 Hide the window (and activate another window.)
'     1 Activate and display the window. (restore size and position) Specify this flag when displaying a window for the first time.
'     2 Activate & minimize.
'     3 Activate & maximize.
'     4 Restore. The active window remains active.
'     5 Activate & Restore.
'     6 Minimize & activate the next top-level window in the Z order.
' *** 7 Minimize. The active window remains active.
'     8 Display the window in its current state. The active window remains active.
'     9 Restore & Activate. Specify this flag when restoring a minimized window.
'    10 Sets the show-state based on the state of the program that started the application.

顺便说一句,您可以简单地使用2个引号将引号插入字符串变量,就像我在以前的源代码中使用的那样。例如,StrVariable=""""给出结果"。那么命令行的字符串是:

command = """%USERPROFILE%\python.exe"" ""%USERPROFILE%\roto.py"""

结果是:

"C:\Users\John Doe\python.exe" "C:\Users\John Doe\roto.py"

相关问题 更多 >