Я писал несколько сценариев VBA для выполнения действий в сеансах PComm. В моем последнем случае процесс состоит в том, чтобы открыть 2 сессии, обе из которых подключены к другой / отдельной (под) системе. Я пытаюсь выяснить, как сделать VBA: - Подключиться к 1 сеансу - Проверить, имеет ли этот сеанс определенные c значения в указанных c координатах (я могу использовать для этого команду GetText) - Если это не сеанс, переключиться на следующий открытый сеанс и цикл - если это сеанс, продолжить с остальной частью процесса (выходной суб)
РЕДАКТИРОВАТЬ: у меня есть следующий код, который помогает определить, если правильная подсистема открыт.
Sub FindSession(FindPlatform As Platform)
Dim SessionLetter As String
Dim strSendToPlatform As String
Dim SL As Integer
Dim Timer As Date
Const DelayInterval = "00:01:00"
On Error GoTo Inicio
Inicio:
Select Case FindPlatform
Case 1
strSendToPlatform = "CARE"
Case 2
strSendToPlatform = "GlobStar"
Case 3
strSendToPlatform = "MainFrame"
Case 4
strSendToPlatform = "Citsob"
Case 5
strSendToPlatform = "Cas"
Case 6
strSendToPlatform = "IMS"
End Select
For SL = 1 To 7
If SL = 1 Then SessionLetter = "A"
If SL = 2 Then SessionLetter = "B"
If SL = 3 Then SessionLetter = "C"
If SL = 4 Then SessionLetter = "D"
If SL = 5 Then SessionLetter = "E"
If SL = 6 Then SessionLetter = "F"
If SL = 7 Then SessionLetter = "G"
Set sConnmgr = CreateObject("PCOMM.autECLConnmgr")
Set objwcc = CreateObject("PCOMM.autECLSession")
objwcc.SetConnectionByName SessionLetter
Select Case FindPlatform
Case 1 'CARE
If objwcc.autECLPS.GetText(1, 65, 3) = "AC2" Then
SessionNotFound = False
Exit Sub
Else
Set objwcc = Nothing
End If
Case 2 'GlobStar
If objwcc.autECLPS.GetText(1, 29, 9) = "GLOBESTAR" Or objwcc.autECLPS.GetText(1, 26, 9) = "GLOBESTAR" Or objwcc.autECLPS.GetText(1, 26, 8) = "AMERICAN" Or objwcc.autECLPS.GetText(1, 25, 8) = "AMERICAN" Then
SessionNotFound = False
Exit Sub
Else
Set objwcc = Nothing
End If
Case 3 'MainFrame
If objwcc.autECLPS.GetText(2, 4, 5) <> " " And objwcc.autECLPS.GetText(2, 4, 5) = "USS10" Then
SessionNotFound = False
Exit Sub
Else
Set objwcc = Nothing
End If
Case 4 'Citsob
If objwcc.autECLPS.GetText(1, 2, 8) = "FASBRSCR" Or objwcc.autECLPS.GetText(1, 2, 7) = "FASAUTH" Then
SessionNotFound = False
Do While GetString(1, 2, 8) <> "FASBRSCR"
SendString "", 1, 9, True
Loop
Exit Sub
Else
Set objwcc = Nothing
End If
Case 5 'Cas
If objwcc.autECLPS.GetText(3, 18, 18) = "CARDMEMBER SERVICE" Or objwcc.autECLPS.GetText(3, 22, 3) = "CUR" Or objwcc.autECLPS.GetText(2, 18, 18) = "CARDMEMBER SERVICE" Then
SessionNotFound = False
Exit Sub
Else
Set objwcc = Nothing
End If
Case 6 'IMS
If objwcc.autECLPS.GetText(1, 2, 5) = "WNSPC" Or objwcc.autECLPS.GetText(7, 24, 7) = "SPECIAL" Then
SessionNotFound = False
Exit Sub
Else
Set objwcc = Nothing
End If
End Select
Next SL
Он проверяет все мои открытые сеансы, чтобы увидеть, открыта ли правильная система, но не выбирает этот сеанс для работы в этом. Например, я вошел в систему «CARE» и «Globstar», и в качестве активного окна было «CARE». Я заставил VBA искать «Globstar», который он нашел, но затем продолжал посылать команды на другой открытый сеанс; в 'CARE'
Кто-нибудь может помочь с этим? Спасибо!