excel - 一个接一个地执行两个 .bat 文件的 VBA 代码
问题描述
我正在尝试编写一个代码来创建和执行两个批处理脚本,一个接一个。第一个制作我的 pdf 文件(makecopies.bat)的给定数量的副本,第二个根据名称列表更改副本的名称。因此,在第 2 次运行之前完成第 1 次的执行至关重要。这就是为什么我避免使用Call Shell("cmd.exe /k cd " & CurDir & " && makecopies.bat", vbHide)
- 我尝试过它,它会导致脚本的重叠执行。
相反,我试图让它与 WScript.Shell 一起工作,因为该方法允许设置waitOnReturn
值。但是,问题如下(我需要执行两个脚本,我以一个为例):
- 下面的部分在我自己的笔记本电脑上运行良好,当我尝试在我的公司计算机(我打算使用代码的那台计算机)上运行代码时,它给出“运行时错误 -2147024894(80070002)自动化错误文件不能成立”
Dim wsh As WshShell
Set wsh = New WshShell
Dim makecopies As String
Dim script_makecopies As Long
Open CurDir & "\makecopies.bat" For Output As #FileNumber
Print #FileNumber, Range("B2").Value
Close #FileNumber
makecopies = CurDir & "\makecopies.bat"
script_makecopies = wsh.Run(makecopies, windowStyle:=0, waitOnReturn:=True)
- 我试图更改我的代码以解决这个问题 - 它有点奏效,反过来又产生了另一个问题:DI 用
wsh.Run "cmd.exe /k makecopies", 0, True
. 这样就完成了工作,但是此时 Excel 停止响应,并且不执行其余代码(即第二个批处理文件)。我注意到当删除/k
Excel 工作正常并且执行此行之后的代码时,但批处理 (makecopies.bat) 本身不是。
有谁知道我怎样才能让它工作?(先感谢您!)
解决方案
推荐阅读
- r - 使用 cbind 合并 xts 对象时 colnames 的行为
- c# - 我有一个字符串 str="75,75,83,84" 我想在 c# 中删除重复项
- angular - Angular(和 JHipster)的问题:value.toLowerCase 不是函数
- sql - 从 Netezza 中的 ROWID 上的 JOIN 转换为 RedShift
- echarts - 如何在echarts中设置多级x轴?
- json - 获取 JSON 时呈现多个 TextInput - React Native
- nativescript - Nativscript 平台特定模板不起作用
- sql - GROUP BY - 内联视图和未连接的表
- javascript - Jwt 无法解析,Okta
- html - 在不使用JS的情况下将文本的最小高度设置为最大文本的高度