VBA для переключения между 2 открытыми сессиями PComm - PullRequest
0 голосов
/ 04 февраля 2020

Я писал несколько сценариев 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'

Кто-нибудь может помочь с этим? Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...