У меня есть некоторый код VBA, который вызывает код VBScript для запуска экспорта SAP:
'VBA CODE
'Grab date modified before running export
tstamp = FileDateTime("exportFilePath")
'Call .vbs file for SAP export and pass shift variable to .vbs file
Shell "wscript """ & "filepath.vbs" & Shift & " " & DateOffset, vbNormalFocus
'Wait for export file to update before opening
X = 1
newtstamp = FileDateTime("exportFilePath")
Do While tstamp = newtstamp
Application.Wait (Now + TimeValue("0:00:01"))
newtstamp = FileDateTime("exportFilePath")
X = X + 1
If X = 60 Then 'allow 60 seconds for export 1 to complete before exiting script
MsgBox ("Export 1 took over 60 seconds and failed to complete, try again!")
Exit Sub
End If
Loop
В некоторых случаях сценарий VBScript будет завершен досрочно (пользователь не вошел в SAP, et c. )
'VBScript
On Error Resume Next
Set SapGuiAuto = GetObject("SAPGUI")
Set SAPApp = SapGuiAuto.GetScriptingEngine
Set SAPCon = SAPApp.Children(0)
Set session = SAPCon.Children(0)
If Err.Number <> 0 Then 'Error number of zero means no error
MsgBox ("Error! Log into SAP then try again.")
wscript.Quit
End If
В подобных случаях я хотел бы сообщить VBA, что VBScript завершился досрочно. Это позволит завершить код VBA до того, как отведено 60 секунд, встроенных в Do L oop.
Мысли и предложения?