Tengo este fragmento como plantilla;
'verificar por
Do While Not session.findById("wnd[1]", False) Is Nothing
If Not session.findById("wnd[1]/usr/btnBUTTON_2", False) Is Nothing Then
session.findById("wnd[1]/usr/btnBUTTON_2").press
End If
If Not session.findById("wnd[1]/usr/btnSPOP-OPTION2", False) Is Nothing Then
session.findById("wnd[1]/usr/btnSPOP-OPTION2").press
End If
Loop
La variable interesante que necesitarás adaptar es esta sección.
If Not session.findById("wnd[1]/usr/btnBUTTON_2", False) Is Nothing
reemplaza "session.findById("wnd[1]/usr/btnBUTTON_2"" con cualquier punto de datos que necesites verificar la existencia.
Podría ser una técnica útil en tu situación, elimina todas las declaraciones de goto excepto tal vez un manejador de errores real al final, ya que 'deberías' estar abordando todas las opciones de interfaz con las que podrías encontrarte.
un ejemplo más involucrado:
Dim pop As SAPFEWSELib.GuiModalWindow
'verificar popups, tabla IE es cross Client, bloqueado, etc
If Not session.FindById("wnd[1]", False) Is Nothing Then
Set pop = session.FindById("wnd[1]")
If InStr(pop.text,
'Tabla bloqueada
Call SetScriptStatus(pop.text)
session.FindById("wnd[1]/usr/btnBUTTON_2").press
session.FindById("wnd[0]/tbar[0]/btn[15