Notifications
Clear all

Atraso em VB Script de SAP

3 Posts
3 Usuários
0 Reactions
2,122 Visualizações
sagrado7
(@sagrado7)
Posts: 32
Eminent Member
Topic starter
 

Bom dia,
Preciso criar um delay de 35 segundos no Script de VB que criei no SAP para extrair informações em uma planilha, o código do Script irá ser executado dentro do módulo do excel. Na hora que o SAP muda a tela para salvar em arquivo do excel aparece o erro: "The control could not be found by id". Acredito que o erro esteja ocorrendo porque a rotina é executada antes da tela do SAP mudar. Já vasculhei a net e tentei tudo quanto é código de delays: loops, application.wait, WScript.Sleep, e nada, só dão erro.
Eis o código do VBS:

If Not IsObject(application) Then
Set SapGuiAuto = GetObject("SAPGUI")
Set application = SapGuiAuto.GetScriptingEngine
End If
If Not IsObject(connection) Then
Set connection = application.Children(0)
End If
If Not IsObject(session) Then
Set session = connection.Children(0)
End If
If IsObject(WScript) Then
WScript.ConnectObject session, "on"
WScript.ConnectObject application, "on"
End If

session.findById("wnd[0]").maximize
session.findById("wnd[0]/tbar[0]/okcd").text = "ZV52"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/rad[2]").select
session.findById("wnd[0]/usr/ctxt[0]").text = "720"
session.findById("wnd[0]/usr/ctxt[1]").text = "0002"
session.findById("wnd[0]/usr/txt[10]").text = ""
session.findById("wnd[0]/usr/txt[10]").setFocus
session.findById("wnd[0]/usr/txt[10]").caretPosition = 0
session.findById("wnd[0]").sendVKey 8

'PRECISO DE UM DELAY DE 35 SEGUNDOS AQUI

session.findById("wnd[0]").maximize
session.findById("wnd[0]/mbar/menu[0]/menu[5]/menu[2]/menu[2]").select
session.findById("wnd[1]/usr/sub/1/rad[1,0]").select
session.findById("wnd[1]/usr/sub/1/rad[1,0]").setFocus
session.findById("wnd[1]").sendVKey 0
session.findById("wnd[1]/usr/ctxt[0]").text = "F:CDF6- Inventário2 - RELATÓRIOS2014BUD"
session.findById("wnd[1]/usr/ctxt[1]").text = "teste2.xlsb"
session.findById("wnd[1]/usr/ctxt[1]").caretPosition = 8
session.findById("wnd[1]/tbar[0]/btn[11]").press

Conte Comigo!
Profissão: Programador VBA Pleno
"Para bom entendedor, meia palavra basta"

 
Postado : 09/12/2014 5:40 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Além da pesquisa de nossa base de dados, leia:
http://msdn.microsoft.com/pt-br/library ... =office.15).aspx
http://www.exceltrick.com/formulas_macr ... functions/

Att

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 09/12/2014 12:30 pm
Reinaldo
(@rlm)
Posts: 246
Estimable Member
 

Como é VBScript
Experimente:

Dim Espera
Espera= DateAdd("s", 35, Now())
Do Until (Now() > Espera)
Loop

ou ainda (tempo em milisegundos --> 1000 = 1 Segundo):

WScript.Sleep 35000

Reinaldo

 
Postado : 09/12/2014 1:15 pm