Depois de muitas horas navegando na internet e uma caixa de cerveja, encontrei uma solução que funcionou para a minha aplicação. Pode não ser a mais bonita, mas funciona e consigo alternar entre as janelas (independentemente da ordem em que foram abertas) à vontade.
A seguir, mostro o que montei.
Por favor, sinta-se à vontade para fazer críticas, pois sou muito novo em SAP e VBA e tenho muito a aprender.
Option Explicit
Sub exemplo()
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 janelas de APO e 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
'- Mudar para a janela do R3 ---------------------
Set Connection = bh1Wnd
Set session = Connection.Children(0)
ë-------------------------------------------------------------------------------
ëcódigo para realizar várias tarefas no R3 vai aqui
ë-------------------------------------------------------------------------------
'----- mudar para a janela do APO ------------------------------------------------------
Set Connection = ba1Wnd
Set session = Connection.Children(0)
ë-------------------------------------------------------------------------------
ëcódigo para realizar várias tarefas no APO vai aqui
ë-------------------------------------------------------------------------------