VBA-创建.vbs和.bat以向外部程序发出击键
我创建了一个vba脚本,它创建了两个文件。vbs文件用于打开外部程序并发送击键。此程序通过.bat文件调用。外部程序(Mathcad)将打开,但不会执行后续操作(sendkeys)。除非任何人都能发现错误,否则我如何调试.vbs文件VBA-创建.vbs和.bat以向外部程序发出击键,vba,batch-file,vbscript,Vba,Batch File,Vbscript,我创建了一个vba脚本,它创建了两个文件。vbs文件用于打开外部程序并发送击键。此程序通过.bat文件调用。外部程序(Mathcad)将打开,但不会执行后续操作(sendkeys)。除非任何人都能发现错误,否则我如何调试.vbs文件 Public Sub Execute_Mathcad() Dim ExportPath As String Dim iFileNum As Long Dim iFileNumvbs As Long Dim wsActive As Worksheet Dim sTe
Public Sub Execute_Mathcad()
Dim ExportPath As String
Dim iFileNum As Long
Dim iFileNumvbs As Long
Dim wsActive As Worksheet
Dim sTempFileName As String
Dim sTempFileNamevbs As String
Set wsActive = ActiveSheet
ThisWorkbook.Save
'Create batch file
With wsActive
'create .vbs file for keystrokes (called in .bat file)
ExportPath = "C:\Temp\"
sTempFileNamevbs = ExportPath & Trim(.Name) & ".vbs"
iFileNumvbs = FreeFile
Open sTempFileNamevbs For Output As #iFileNumvbs
Print #iFileNumvbs, "Set WshShell = WScript.CreateObject(" & Chr(34) & "WScript.Shell" & Chr(34) & ")"
Print #iFileNumvbs, "WshShell.Run(" & Chr(34) & "C:\Users\blah.xmcd" & Chr(34) & ")"
Print #iFileNumvbs, "WScript.Sleep 10000"
Print #iFileNumvbs, "WshShell.AppActivate"; Spc(1); "WshShell"
Print #iFileNumvbs, "WScript.Sleep 5000"
Print #iFileNumvbs, "WshShell.SendKeys"; Spc(1); """^{F9}"""
'create .bat file
sTempFileName = ExportPath & Trim(.Name) & ".bat"
iFileNum = FreeFile
Open sTempFileName For Output As #iFileNum
Print #iFileNum, "@Echo off"
Print #iFileNum, "wscript"; Spc(1); """C:\Temp\Results.vbs"""
End With
Close #iFileNum
Close #iFileNumvbs
'run batch file
retVal = Shell(sTempFileName, vbHide)
'this returns an error if sTempFileName is incorrect
If retVal = 0 Then
MsgBox "An Error Occured"
Close #FileNumber
End
End If
'exit Excel using VBA command
Application.Quit
End Sub
代码已更正,现在可以工作了。谢谢大家的意见。我相信有一个更整洁的解决方案,但这确实有效 你也可以发布它创建的BAT文件吗?你好,马克,除非我误解,否则它包含在上面的脚本中?
Print#iFileNum,“@Echo off”Print#iFileNum,”wscript;Spc(1);“C:\Temp\Results.vbs”“”
。生成的批处理文件代码如下所示:@Echo off wscript“C:\Temp\Results.vbs”
您发布了创建BAT的代码,而不是BAT本身。此外,.vbs文件如下所示:Set WshShell=wscript.CreateObject(“wscript.Shell”)WshShell.Run(“C:\Users\blah.xmcd”)wscript.Sleep 10000 WshShell.AppActivate“Mathcad”WScript.Sleep 5000 WshShell.SendKeys“^{F9}”
如果使用CSCRIPT/NOLOGO C:\Temp\Results.VBS从命令提示符运行VBS会发生什么情况