Vba 如果宏在调用VBS时引发错误,如何安全地退出EXCEL
我的VBS: 全流:Vba 如果宏在调用VBS时引发错误,如何安全地退出EXCEL,vba,vbscript,Vba,Vbscript,我的VBS: 全流: Dim WshShell, strCurDir Set objExcel = CreateObject("Excel.Application") Set WshShell = CreateObject("WScript.Shell") strCurDir = WshShell.CurrentDirectory Set objworkBook = objExcel.Workbooks.Open(strCurDir & "\MasterSheetFetchJob.xls
Dim WshShell, strCurDir
Set objExcel = CreateObject("Excel.Application")
Set WshShell = CreateObject("WScript.Shell")
strCurDir = WshShell.CurrentDirectory
Set objworkBook = objExcel.Workbooks.Open(strCurDir & "\MasterSheetFetchJob.xlsm")
objworkBook.Fullflow
objExcel.ActiveWorkbook.Close
objExcel.Application.Quit
WScript.Quit
Sub-Fullflow()
黯淡的主人
设置Host=CreateObject(“BZWhll.WhllObj”)
Retval=Host.Connect(“A”)
如果(返回)那么
“Host.MsgBox”连接到会话A时出错!”,48
如果结束
Host.ReadScreen localorvpn,28,2,2
'根据连接类型在TPXA或L TPX中输入命令
如果localorvpn=“请输入‘命令’登录”,则
Host.WriteScreen“tpx”,3,4
其他的
Host.ReadScreen vpn,13,17,5
如果vpn=“L应用程序”,则
Host.WriteScreen“L TPX”,24,7
其他的
'MsgBox(“已登录”)
退出功能
如果结束
如果结束
Host.SendKey“”
'等待用户ID文本出现在登录屏幕中
WaitForScreen“Userid”,11,5
Host.SendKey用户名
Host.SendKey“”
Host.SendKey mfp
Host.WaitReady 101000
Host.SendKey“”
WaitForScreen“MSGID”,1,2
Host.SendKey“”
“TPXMenu…”。。。。
等待屏幕“sessiond”,6,6
端接头
一切正常时,它工作正常。。但在执行过程中,如果主机出现问题。。它停止了死刑没关系。。但如果我们打开excel,它会显示它只准备好了,没有打开。。如果我们在不杀死excel的情况下再次运行。。工作簿已损坏,无法使用
所以每次我们在excel开始执行之前杀死它。。但问题是,如果我们还有其他未保存的工作簿也正在关闭。。这是处理此错误的唯一方法吗
有什么建议吗
FullFlow
Sub
(在脚本代码中):
我会改变
objworkBook.Fullflow
FullFlow
Sub
(在脚本代码中):
我会改变
objworkBook.Fullflow
这是主机自动化使用火箭蓝区。它只支持宏和vbs如果我们使用Run调用它,它不会锁定Excel?@ChanGan:如果支持vbs,为什么还要使用Excel?然后,我不能确定是否会产生错误锁,但使用Excel automation从工作簿调用sub是一种更合适的方法…最初计划仅使用vbs。。但对于vbs,每当我更改代码时,我都会使用bit9块来解锁它。。所以我淘汰了that@ChanGan:关于API方法,为了避免
Sendkey
,这可能是错误的来源…它是使用Rocket Bluezone的大型机自动化。它只支持宏和vbs如果我们使用Run调用它,它不会锁定Excel?@ChanGan:如果支持vbs,为什么还要使用Excel?然后,我不能确定是否会产生错误锁,但使用Excel automation从工作簿调用sub是一种更合适的方法…最初计划仅使用vbs。。但对于vbs,每当我更改代码时,我都会使用bit9块来解锁它。。所以我淘汰了that@ChanGan:API方法如何,以避免Sendkey
,这可能是错误源。。。
Sub Fullflow()
Dim Host
Set Host = CreateObject("BZWhll.WhllObj")
Retval = Host.Connect("A")
If (Retval) Then
'Host.MsgBox "Error connecting to session A!", 48
End If
Host.ReadScreen localorvpn, 28, 2, 2
'Enter Command in the TPXA or L TPX based on the connection Type
If localorvpn = "PLEASE ENTER 'Command' TO LOGON" Then
Host.WriteScreen "tpx", 3, 4
Else
Host.ReadScreen vpn, 13, 17, 5
If vpn = "L application" Then
Host.WriteScreen "L TPX", 24, 7
Else
'MsgBox ("Already logged in")
Exit Function
End If
End If
Host.SendKey "<ENTER>"
'Waitfor UserId Text to appear in Login screen
WaitForScreen "Userid", 11, 5
Host.SendKey Username
Host.SendKey "<TAB>"
Host.SendKey mfp
Host.WaitReady 10, 1000
Host.SendKey "<ENTER>"
WaitForScreen "MSGID", 1, 2
Host.SendKey "<ENTER>"
'TPXMenu....
WaitForScreen "Sessid", 6, 6
End Sub
objExcel.Application.Run "'" & strCurDir & "\MasterSheetFetchJob.xlsm" & "'!Fullflow"