从 VBA 运行 python 脚本

2023-12-04

下面的代码在一台机器上从 Windows excel VBA Shell 执行简单的 python 脚本,但不在另一台机器上执行。

 Sub RunIt()
    CreateObject("wscript.shell").Run "python.exe " & """\\acntnyc039\dept\HGS\Bob\test_syst_arg2.py""", 1, True
    'same as
    Shell "python.exe ""\\acntnyc039\dept\HGS\Bob\test_syst_arg2.py""", 1
End Sub

对应的Python:

import pandas as pd
import sys
path = r'\\acntnyc039\dept\HGS\Bob\test\test.csv'

raw_data = {'first_name': ['Jason', 'Molly', 'Tina', 'Jake', 'Amy'], 
        'last_name': ['Miller', 'Jacobson', 'Ali', 'Milner', 'Cooze'], 
        'age': [42, 52, 36, 24, 73], 
        'preTestScore': [4, 24, 31, 2, 3],
        'postTestScore': [25, 94, 57, 62, 70]}
df = pd.DataFrame(raw_data, columns = ['first_name', 'last_name', 'age',
                                       'preTestScore', 'postTestScore'])
df.to_csv(path)

我已阅读所有类似的主题并检查了以下内容:

  1. 两个用户都具有相同的非管理员访问权限,但其中一个用户不会执行该操作,不会产生任何错误消息(但 cmd 打开)
  2. 网络路径没有空格
  3. 同一行直接从 cmd 运行得很好
  4. 输入时发现pythonpython from cmd,但仍然尝试将 python 替换为python.exe以及完整路径python.exe在上面的VBA字符串中无济于事
  5. 完全重新安装 anaconda3 并没有解决问题
  6. shell 似乎在非 python 代码上运行良好,如下所示:

Shell "notepad.exe ""\\acntnyc039\dept\HGS\Bob\test\test.csv""", 1

我真的没有想法了......


这是 VBA 中的代码:

Dim wshShell As Object
Dim py_exe As String
Dim script_path As String, script_name As String
Dim waitOnReturn As Boolean: waitOnReturn = True
Dim windowStyle As Integer: windowStyle = 1

py_exe = "python.exe"
script_name = "write.py"
script_path = Application.ThisWorkbook.Path & "\" & script_name

Set wshShell = CreateObject("WScript.Shell")
wshShell.Run py_exe & " " & script_path, windowStyle, waitOnReturn

可能需要三引号"""if spaces in the path"""

这里是最有用的部分(通过执行bat检查错误的VBA代码):

Dim errorCode As Long  'to check via bat
errorCode = wshShell.Run("cmd.exe /C C:\code\yourpath\BaT.bat", windowStyle, waitOnReturn)

这里是.bat itself:

:: this is to keep cmd open after run, /k
start cmd.exe /k ""python" "C:\code\yourpath\write.py""

最后这是一个示例 python 脚本write.py上面用过。请注意指定完整路径因为它可能运行良好cmd或 IDE 但不是来自wscript.Shell

from pathlib import Path
import sys
# directory of main and all supplementary files such as err.txt and .png
file_dir = Path(__file__).parent.absolute()

sys.stderr = open(file_dir / 'err.txt', 'w')
sys.stdout = open(file_dir / 'out.txt', 'w')

with open(file_dir / 'readme.txt', 'w') as f:
    f.write('Hello Peter!')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 VBA 运行 python 脚本 的相关文章

随机推荐

  • Android 管理 API:企业/策略列表?

    这让我抓狂 我已成功遵循Android 管理 API 快速入门创建项目 企业 策略并将其安装在设备上 我愚蠢地没有写下企业或策略 ID 我尝试创建一个新集 但非企业电子邮件现在给出错误 表明它已经是另一个 EMM 的一部分 控制台中是否有一
  • Heroku SSL 错误:密钥与 PEM 证书不匹配

    我正在尝试使用 Heroku 建议的说明生成自签名证书 http www akadia com services ssh test certificate html 这将创建 sever key 和 server crt 然后我尝试使用以下
  • 隐藏 UITableViewCell

    有没有办法隐藏 UITableView 单元格 我正在寻找一些可以在同步 cellForRowAtIndexPath 返回的 UITableViewCell 上调用的属性或方法 以隐藏它并使其无法被用户选择 对我来说 使用映射并不是一个简单
  • 如何获取并解析附加到 url 中的查询字符串? PHP

    我正在尝试开发一个 PHP 类 它使我能够将查询字符串附加到 url 中 并根据传递的变量对其进行处理 如何才能做到这一点 Eg www example com var1 a var2 b var3 c 现在我想要得到 var1 a var
  • 在 Lyx 中使用 Knitr 时出现 R 函数错误

    使用summary 函数时出现错误 Lyx 中的针织者 它前面的函数可以工作 lt lt gt gt library faraway head teengamb mdl lt lm gamble sex status data teenga
  • 如何在 Jenkins 托管的网格上使用 Chromedriver 设置 Selenium

    我刚刚迈出了使用 Selenium 的第一步 我成功设置了一个测试 Firefox 驱动程序 在我的 Jenkins 上的 Selenium 网格上运行 使用 Jenkins Selenium Grid 插件 我还在运行 Jenkins 的
  • JavaScript sweetAlert 弹出窗口在一秒钟后自行关闭

    我有一个 SweetAlert 弹出窗口 但它会自动关闭 通常它应该保留到用户单击 确定 为止 我已经包含并测试了所有 SweetAlert 文件
  • 通过 RStudio 加载 com.databricks.spark.csv

    我已经安装了Spark 1 4 0 我还安装了它的 R 包 SparkR 并且可以通过 Spark shell 和 RStudio 使用它 但是 有一个我无法解决的差异 启动 SparkR shell 时 bin sparkR master
  • for 循环中的 MATLAB 和元胞数组处理

    我是 MATLAB 新手 想从数据库中获取的元胞数组中提取数据 sensors 1 23 1 0 0 1000 1x29 char 2 23 1 120 0 1000 1x43 char 3 23 1 120 0 1000 1x42 cha
  • FaceBook 应用程序:检索我的应用程序用户的 ID 列表

    我可以使用 fql 或 graph api 检索它吗 每次用户访问您的应用程序时 都可以像这样检索他的 facebook id facebook new Facebook api key secret facebook gt require
  • 关闭时为详细信息标签设置动画

    我正在为我的历史项目开发一个网站 但遇到了一个问题 我尝试为详细信息标签设置动画 但似乎没有任何效果 这是我用于打开动画的代码 keyframes open 0 opacity 0 transform translateY 1vw 100
  • 如何在 Visual Studio 2010 中打开 IntelliSense?

    我正在尝试为 aspx 文件类型启用智能感知 我在文本编辑器选项中检查了自动列表成员 勾选隐藏高级会员与否没有什么区别吗 如何在 vs net 2010 中启用智能感知 应立即为 ASP NET 启用 IntelliSense 包括 asp
  • Python 将图像转换为使用更少的颜色

    我想拍摄一张图像并 以某种方式 将其读取为像素数组 这意味着 2d 数组的每个元素都是表示该像素颜色的十六进制代码或 RGB 三元组 我研究过图像处理 发现了 Pillow 或 SciPy 之类的东西 但我只发现了过于简单的东西 例如添加过
  • Python 正则表达式匹配无法匹配孟加拉语句子中的特定单词

    这里有奇怪的小问题 我有孟加拉语 随机 句子 我尝试在其上运行正则表达式 使用Pythonre库 像这样 令牌 4 re search r b b
  • Square 有沙盒测试帐户吗?

    我正在尝试为 Square Connect API 开发一个包装器 我正在寻找沙盒帐户或将测试数据导入新帐户的方法 以便我可以快速开始开发方面 谢谢你 为了供从 Google 登陆这里的人们将来参考 Square 现在提供此功能 每个帐户都
  • 读取原子修改的值是否需要内存屏障?

    鉴于以下情况 class Foo public void Increment InterlockedIncrement m value OSIncrementAtomic long GetValue return m value priva
  • Scrapy:抓取链接列表

    这个问题有点后续this我之前问过的问题 我正在尝试抓取一个首页上包含一些链接的网站 类似的东西this 现在 由于我想抓取页面上存在的项目的详细信息 因此我提取了它们各自的 URL 我已将这些 URL 保存在列表中 如何启动蜘蛛来单独抓取
  • bsxfun 真的按元素应用吗?

    假设我有以下函数 function x printAndKeepX x y x y end 我调用bsxfun像这样 bsxfun printAndKeepX 1 4 1 Were bsxfun真的逐个元素 我希望printAndKeepX
  • 解析 JSON 响应,其中对象以 C# 中的数字开头

    我正在尝试将 REST 服务的响应反序列化为 C 强类型类 但是我遇到了本文中的相同问题 如何输出键以数字开头的 JSON 值 但是我有一个问题 你不能在 C 中以数字开头变量名 这意味着该级别的类只会反序列化为 null 我需要知道如何进
  • 从 VBA 运行 python 脚本

    下面的代码在一台机器上从 Windows excel VBA Shell 执行简单的 python 脚本 但不在另一台机器上执行 Sub RunIt CreateObject wscript shell Run python exe acn