WScript.Shell 用于运行路径中包含空格且来自 VBA 的参数的脚本

2023-12-02

我需要使用 WScript.Shell 从 VBA 调用脚本 (R)。文件的路径包含空格。此外,还会将一系列参数传递给脚本,其中一些参数还包含空格。

我已经尝试了所有可以想到的路径、参数甚至整个字符串的引号和双引号的组合(特别是这里)。当需要传递参数时,似乎没有任何效果(我要么在命令行中收到“C:\Program”无法识别”或“无效语法”错误)。

Option Explicit
Private Const QUOTE As String = """"

Sub test()
    Dim WS_Shell As Object
    Set WS_Shell = VBA.CreateObject("WScript.Shell")
    Dim err_code As Long

    Dim path As String
    Dim arg_1 As String
    Dim arg_2_with_spaces As String

    Dim complete_cmd_str As String

    path = "C:\Program Files\R\R-3.3.2\bin\Rscript.exe"
    arg_1 = "F:\path\to\my\script.R"
    arg_2_with_spaces = "A string-arg with spaces"

    complete_cmd_str = "cmd.exe /K " & QUOTE & path & QUOTE & " " _
                    & QUOTE & arg_1 & QUOTE & " " _
                    & QUOTE & arg_2_with_spaces & QUOTE

    Debug.Print complete_cmd_str
    err_code = WS_Shell.Run(complete_cmd_str, vbMinimizedNoFocus, True)
End Sub

所有这一切都发生在 Windows 7 上。

如何运行路径和要传递的参数中都带有空格的命令行脚本?非常感谢任何帮助!

Update:

如果从命令字符串中删除前缀“cmd.exe /K”,则该代码将起作用。但是,为了测试和调试,我想在脚本运行后保持 shell 窗口打开。如何才能实现这一目标?


enter image description hereI used to run scripts and pass arguments from Excel, this code works for me.

为了运行脚本,首先指定 Rscript.exe 的路径和 R 脚本(.r 文件)的路径非常重要,然后可以使用空格传递参数。

Sub run_R()

    Dim shell As Object
    Set shell = VBA.CreateObject("WScript.Shell")
    Dim waitTillComplete As Boolean: waitTillComplete = True
    Dim style As Integer: style = 1
    Dim errorcode As Integer
    Dim path As String

    path = Chr(34) & "C:\R\R-3.4.0\bin\i386\Rscript.exe" & Chr(34) & " " & Chr(34) & "C:\Users\userexample\Desktop\accionable.r" & Chr(34) & " " & Chr(34) & "Argument 1" & Chr(34)

    errorcode = shell.Run(path, style, waitTillComplete)

End Sub

读取参数的 R 代码:

args = commandArgs(trailingOnly = T)
cat(args[1])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WScript.Shell 用于运行路径中包含空格且来自 VBA 的参数的脚本 的相关文章

  • 在 bash 脚本中提取 XML 值 [重复]

    这个问题在这里已经有答案了 我正在尝试从 xml 文档中提取一个值 该文档已作为变量读入我的脚本中 原始变量 data is
  • 从 MS Access 调用存储过程会导致错误 3146

    当我使用下面所示的代码从 MS Access 前端调用 SQL Server 存储过程时 它停止运行并抛出运行时错误 3146 这个存储过程在 SQL Server 中工作正常 但是当我从 MS Access 运行时 它首先工作 但突然停止
  • 使用宏打开受信任文档或启用宏时 Excel 崩溃

    正如标题所示 我无法使用宏打开受信任的文档 Excel 立即崩溃 制作文档的副本允许其打开 因为该副本不受信任 并且我可以检查 VB 编辑器中的宏 但启用宏会导致另一次崩溃 为什么会发生这种情况以及我可以采取什么措施来解决它 我今天遇到了类
  • 如何以管理员身份在 rake 任务中运行 shell 命令?

    我有一个简短的 cmd 文件 我想将其作为部署过程的一部分运行 不幸的是 cmd 文件需要管理员权限 是否可以从 rake 中获得管理员权限 或者我是否需要以管理员身份启动 shell 您可以尝试runas http ss64 com nt
  • 返回条件格式化单元格内部颜色的函数

    我想要一个返回条件格式单元格颜色索引值的函数 它用于检查一行中的多个单元格 如果它们使用条件格式突出显示 则需要执行操作 检查单元格中是否有颜色比创建覆盖条件的组合条件公式更简单所有细胞的 或者说我是这么想的 尽管代码在消息框中有效 但下面
  • 如何从我自己的脚本向 Fish shell 提供制表符补全?

    我运行的是 Ubuntu 13 10 和 Fish 2 1 0 我想自己编写一个 Python 脚本来从命令行执行一些任务 该脚本将需要命令行参数 我怎样才能编写我的脚本 以便 Fish 可以请求并获取给定参数的可能值 潜在值列表是动态的
  • 为什么pip找不到winrt?

    我刚买了一台新笔记本电脑 我正在尝试用 python 设置它 我正在使用 python 3 10 0 windows 10 pip v21 3 在大多数情况下 pip 似乎工作正常 我已经使用它来安装多个软件包 例如 pygame 但是 当
  • xcodebuild 命令工具,无需安装 Xcode 本身

    我需要在不会进行任何开发的机器上以自动化流程构建 Xcode 项目 我还想节省该机器上的磁盘空间 我以为xcodebuild命令行将是完美的 但要安装该工具 您需要安装 Xcode 本身 有没有办法只安装xcodebuild和其他依赖项 我
  • 在用户窗体终止/关闭 VBA 时调用数组

    我有一个问题 我想在用户窗体关闭时将用户窗体的内容存储在数组中 我认为我的语法正确 但似乎不会在用户窗体初始化时重新填充 我尝试将数组放入其自己的模块中 但这也不起作用 有人愿意启发我吗 示例代码 Public Sub DPArrayStu
  • 插入行而不选择任何内容?

    我正在使用 VBA 希望在特定位置插入一行而不选择它 我遇到的问题是 选择该行后 当脚本运行完毕时 电子表格会向下滚动到该行 我希望能够在不将电子表格向下滚动到插入行的情况下执行此操作 Rows i i Select ActiveCell
  • 在 SWI Prolog 中使用 process_create/3 使用命令提示符或 shell 时出错

    在 Windows 7 上 当我在 SWI Prolog 中使用 process create 3 打开 Notepad exe 等应用程序时 记事本将打开 但是 它不适用于使用命令提示符的应用程序 例如 当我尝试打开命令提示符窗口时 使用
  • 如何在VBA中将文本文件读取到数组中

    我正在尝试将制表符分隔的文本文件提取到数组中 我已经知道如何将该文本文件读入电子表格中 以下是我的代码 它运行良好 While Not EOF iFile Line Input iFile LineText Dim arr arr Spli
  • 如何从另一个工作簿(excel)复制数据?

    我已经有一个可以创建工作表和其他一些东西的宏 创建工作表后 我是否想调用另一个宏 将数据从第二个 Excel 其打开 复制到第一个活动 Excel 文件 首先 我想复制到标题 但我无法让它工作 不断出现错误 Sub CopyData she
  • 如何使用Excel的墨迹工具添加手写签名?

    我想在我公司的一些表格中添加手写数字签名 目标是选择一个文档 添加签名 通过使用绘图板 这可以使用 Excel 的墨水工具完成 并将文件作为 PDF 存储在服务器中 这将消除打印然后扫描表格以获得签名的必要性 我使用 Excel 作为文件操
  • 在 C# 中读取/写入命令行程序

    我正在尝试与 C 的命令行程序进行对话 它是一个情绪分析器 它的工作原理如下 CMD gt java jar analyser jar gt Starting analyser 这是我想从我的 C 程序插入内容的地方 例如 I love y
  • 从终端查询不会打印任何内容

    当在命令行中运行时 这 swipl g write 42 t halt 打印 42 到STDOUT正如预期的那样 然而 这 swipl g X 42 t halt 不打印任何内容 它只是返回 我如何让它打印在 REPL 中打印的内容 即X
  • VBA FreeLibrary 不卸载 DLL

    当我使用完一个 DLL 文件后 我需要删除它 代码完成后清理 我尝试在 Excel VBA 中使用 LoadLibrary 和 FreeLibrary 但无论我做什么 Excel exe 都会坚持 DLL 文件 Public Declare
  • 将不连续范围从一张纸复制到另一张纸

    VBA 新手 也是第一次发帖 可能会问一个非常基本的问题 然而 我在互联网上 或在我拥有的参考书中 没有找到答案 所以我很困惑 如何将一张纸中的一堆间隔开的列放入另一张纸中 但没有间隙 例如 我想从这样的工作表中复制标记为 x 的单元格 x
  • 两个数组相乘 - 区域小数分隔符问题

    Background 刚才 我回答了一个问题 我必须将两个相同大小的数组相乘 但是我注意到我的本地小数分隔符存在一个特殊问题 Sample Code Sub Sample Dim arr1 As Variant arr2 As Varian
  • 如何使用 VBA 将行从一张 Excel 工作表复制到另一张 Excel 工作表并创建重复项?

    我有一个包含两张表的 Excel 工作簿 sheet1 在 A 到 R 列中包含一个大型数据表 标题位于第 1 行 Sheet2 在 A 到 AO 列中包含数据 我试图使用 VBA 从sheet1 复制行并将它们粘贴到sheet2 的末尾

随机推荐

  • React js组件,map可以工作,foreach不行

    我有一个呈现标签的组件 它循环遍历地图并显示数据 我尝试使用 forEach 但它不起作用 但是 如果我将映射转换为数组 它就可以工作 foreach 也不适用于数组 我在这里缺少什么 这有效 render return div class
  • 重命名模型和关系字段的 Django 迁移策略

    我计划重命名现有 Django 项目中的多个模型 其中有许多其他模型与我要重命名的模型具有外键关系 我相当确定这将需要多次迁移 但我不确定确切的过程 假设我从 Django 应用程序中的以下模型开始 名为myapp class Foo mo
  • Zoom:1;有什么bug在 CSS 中修复?

    我见过人们应用 CSS 属性zoom 1 在 HTML 元素上 他们为什么这样做 它修复了什么错误 这提供了一个称为hasLayout在 Internet Explorer 版本 7 及更低版本中 关于这个主题的权威文章在这里 http w
  • 在 iPhone 应用程序启动期间(即应用程序加载期间)播放电影文件

    我想播放电影文件或任何动画文件 直到时间应用程序未完全加载 有什么简单的方法可以做到吗 告诉别人他们想做什么是值得怀疑的 我的客户想要播放一部电影 而这只是一部 3 秒的电影 这就是所谓的品牌推广 如果他的用户不喜欢它 他们会告诉他
  • QT QImage - 将图像的一部分复制为多边形

    尝试将图像的一部分复制为多边形 特别是五边形 但我更感兴趣的是如何复制为除矩形之外的任何内容 以下代码仅允许复制为矩形 QImage copy const QRect rect QRect const inline QImage copy
  • AWS Fargate - 不使用 SES 端点从私有子网发送电子邮件

    我有一个带有自动缩放 Fargate 容器的配置 在公共子网配置或 NAT 配置中使用 SES 简单电子邮件服务时 电子邮件可以正确发送 当容器移动到具有 SES 端点接口的私有子网时 不再发送电子邮件 以下两个带有连接超时消息的选项 对于
  • 如何制作一组列表

    我有一个这样的列表 i 1 2 3 2 4 5 1 2 3 2 4 5 我想获得一个包含 唯一 列表 基于其元素 的列表 例如 o 1 2 3 2 4 5 我无法使用set 因为列表中有不可散列的元素 相反 我正在这样做 o for e i
  • 从 jBPM 流程访问数据库

    如何从 jBPM 流程访问数据库 您认为我可以使用脚本任务或人工任务的进入 退出操作连接到数据库吗 我建议不要使用人工任务的进入 退出操作来存储代码 弄清楚您将代码放在哪里可能是一场噩梦 因为当人工任务有代码时没有视觉线索 您可以尝试脚本任
  • Grails 限制表创建

    我想使用 Grails 功能在有限的基础上创建 更新数据库表 具体来说 我希望 Grails 管理一些表 但不是全部 有没有办法限制 Grails 管理的表 或者这是一个全有或全无的提议 一般来说 要么全有 要么全无 因为 Grails 使
  • 缓慢的 Skscene 过渡

    我有两个场景 家庭和玩耍 与到家庭场景的转换相比 到游戏场景的转换确实很慢 我想这是因为我的游戏场景中有更多的事情发生 有什么方法可以预加载播放场景吗 或者让过渡更加无缝 我对这个论坛的答案感兴趣预加载场景以防止延迟 但我不知道从哪里开始
  • 在控制器中为每个 RequestMapping 不同地配置 FAIL_ON_UNKNOWN_PROPERTIES

    我想在不同的设备上以不同的方式处理 json 到对象的转换 RequestMapping在我的控制器中 我相信 如果我们在 spring boot 项目中添加 Jackson 依赖项 它会处理 json 到对象的转换 spring jack
  • 如何使用 jaro-winkler 查找表中最接近的值?

    我的数据库中有一个 jaro winkler 算法的实现 这个函数不是我写的 该函数比较两个值并给出匹配的概率 所以 jaro string1 string2 matchnoofchars 将返回结果 我不想比较两个字符串 而是想发送一个带
  • Jenkins 插件的 Spring-core 依赖版本错误

    我正在尝试制作一个使用的 Jenkins 插件需要 spring core 3 2 2 的库 cloudfoundry client lib 我只是使用 mvn 命令创建一个框架插件 然后将 Maven 依赖项添加到 pom xml 以及一
  • 将 numpy 开放网格转换为坐标

    我想将 numpy ix 例程返回的开放网格转换为坐标列表 eg for In 1 m np ix 0 2 4 1 3 In 2 m Out 2 array 0 2 4 array 1 3 我想要的是 0 1 0 3 2 1 2 3 4 1
  • 使用 Maven Surefire 运行依赖项 jar 中包含的 JUnit 测试

    我的 Maven 存储库中有一个 jar 其中包含 junit 测试 它应该在不同的项目中运行 因为它能够检查项目并测试其某些功能 不幸的是 surefire 不会拾取罐子中包含的测试 因为这功能请求显示 在功能请求中 他们建议解压 jar
  • ENTITY 声明可以嵌套在引用的 XML 文件中吗?

    我正在处理一个相当大的 DocBook XML 文档 主书有章节 但通过使用实体引用包括所有小节 像这样的事情 main book xml
  • 如何在C#中使用&运算符?代码的翻译是否正确?

    C 中的 if arg2 1 行 arg2 是 DWORD 等于 C 中的 if arg2 1 0 arg2 是 Uint32 对吗 我正在尝试将函数从 C 转换为 C 但出现错误 Operator cannot be applied to
  • 尝试使用 Spring Data JPA 运行存储过程时出现“类型不能为 null”异常

    我正在尝试调用一个存储过程 其签名如下所示 CREATE OR REPLACE PROCEDURE FIND FIRST BOOKMARK GT bookmark IN NUMBER cur OUT SYS REFCURSOR 我正在使用
  • 在左侧显示多行值并破坏堆栈右侧对齐时的 SwiftUI 错误

    当文本输入是多行时 我面临对齐问题 在此示例中 第一部分显示图像中正确显示的左侧和右侧文本 第二部分 它显示 3 到 4 行的文本 这会干扰右侧的对齐 我想让左边在多行中独立调整大小 右侧保持原样 之间没有间隙 2nd title and
  • WScript.Shell 用于运行路径中包含空格且来自 VBA 的参数的脚本

    我需要使用 WScript Shell 从 VBA 调用脚本 R 文件的路径包含空格 此外 还会将一系列参数传递给脚本 其中一些参数还包含空格 我已经尝试了所有可以想到的路径 参数甚至整个字符串的引号和双引号的组合 特别是这里 当需要传递参