python - 远程连接上的 VBA Shell
问题描述
如果我在 C 驱动器上的本地计算机上运行此代码,则此代码有效。但是,如果我在登录到同一台远程计算机的会话中尝试从远程计算机上的电子表格运行它,则不会发生任何事情。它本身不会崩溃,只是不会产生任何东西。
...
Call RunCmd("python37 get_eff_req_data.py HPBoiler_RunMgr_v00.txt")
...
Sub RunCmd(cmd)
Dim wsh As Object
Set wsh = VBA.CreateObject("WScript.Shell")
Dim waitOnReturn As Boolean: waitOnReturn = True
Dim windowStyle As Integer: windowStyle = 1
ChDir ThisWorkbook.Path
Call wsh.Run(cmd, windowStyle)
End Sub
如果我在电子表格目录中远程计算机上的 PowerShell 窗口中运行该确切的命令行,它工作正常。也许这是一个因素,具有此宏的电子表格位于 D 驱动器上,而 Python 位于远程计算机的 C 驱动器上?但是为什么它在 Powershell 中运行良好呢?我会说,当 VBA 宏尝试运行 shell 时,它会打开常规的 DOS 命令提示符,而不是 Powershell,当我自己打开命令提示符时,它会转到另一个驱动器,即 H 驱动器。我无法从命令提示符访问 D 驱动器,但我已确认 Python 将在 H.
解决方案
供参考
ChDir ThisWorkbook.Path
仅当当前目录与您尝试设置的路径位于同一驱动器上时才有效。如果它在不同的驱动器上,那么您首先需要调用ChDrive
以设置正确的驱动器。
推荐阅读
- c# - AAD-B2C 与自定义角色存储的 ASP.Net Core Identity 组合
- javascript - Javascript rxjs - 当从 observable 发出最后一个值时做一些事情
- c# - 无法解析目标框架“.NETFramework,Version=v4.6.1”的 mscorlib
- angular - 为 Kendo Angular 饼图设置类别轴标签标题
- maven - 如何排除 hive-exec 的所有漏洞,包括“阴影”依赖本身?
- node.js - 命令 gulp 错误“assert.js:42 throw new errors.AssertionError”
- office365 - 将 office 365 集成到 keycloak
- jsf - Spring Security 5 和 JSF 2.2 Bean 身份验证
- javascript - 从对象数组中提取数据
- javascript - 通过电子邮件向 Wysiwyg 发送书面文本时出错