Después de muchas horas de navegación por internet y una caja de cerveza, encontré una solución que funcionó para mi aplicación. Puede que no sea la más bonita, pero sí funciona y puedo cambiar entre las ventanas (independientemente del orden en que se abrieron) a voluntad.
A continuación, te muestro lo que he armado.
Por favor, siéntete libre de hacer críticas ya que soy muy nuevo en SAP y VBA y tengo mucho que aprender.
Option Explicit
Sub ejemplo()
Dim Application, SapGuiAuto, Connection, session
Dim SID, bh1Wnd, ba1Wnd, CollCon, i, CollSes
Set SapGuiAuto = GetObject("SAPGUI")
Set Application = SapGuiAuto.GetScriptingEngine
Set CollCon = Application.Connections()
If Not IsObject(CollCon) Then
Exit Sub
End If
'- Encontrar ventanas de APO y R3 -------------------------------------------
For i = 0 To CollCon.Count() - 1
Set Connection = Application.Children(CLng(i))
If Not IsObject(Connection) Then
Exit Sub
End If
Set CollSes = Connection.sessions()
If Not IsObject(CollSes) Then
Exit Sub
End If
Set session = Connection.Children(0)
SID = session.info.SystemName()
If Not IsObject(bh1Wnd) Then
If SID = "BH1" Then Set bh1Wnd = Application.Children(CLng(i)) 'R3
End If
If Not IsObject(ba1Wnd) Then
If SID = "BA1" Then Set ba1Wnd = Application.Children(CLng(i)) 'APO
End If
Next
'- Cambiar a la ventana de R3 ---------------------
Set Connection = bh1Wnd
Set session = Connection.Children(0)
‘-------------------------------------------------------------------------------
‘código para realizar diversas tareas en R3 va aquí
‘-------------------------------------------------------------------------------
'----- cambiar a la ventana de APO ------------------------------------------------------
Set Connection = ba1Wnd
Set session = Connection.Children(0)
‘-------------------------------------------------------------------------------
‘código para realizar diversas tareas en APO va aquí
‘-------------------------------------------------------------------------------