0

我正在尝试编写一个代码来创建和执行两个批处理脚本,一个接一个。第一个制作我的 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 停止响应,并且不执行其余代码(即第二个批处理文件)。我注意到当删除/kExcel 工作正常并且执行此行之后的代码时,但批处理 (makecopies.bat) 本身不是。

有谁知道我怎样才能让它工作?(先感谢您!)

4

0 回答 0