VBA在2个打开的PComm会话之间切换

VBA在2个打开的PComm会话之间切换,vba,Vba,我一直在编写一些VBA脚本来执行PComm会话中的操作。 对于我最近的一次,过程是打开两个会话,两个会话都登录到不同的/单独的(子)系统。 我正在尝试了解如何制作VBA: -连接到1个会话 -检查会话在特定坐标中是否有特定值(我可以使用GetText命令) -如果不是会话,则切换到下一个打开的会话并循环 -如果是该会话,则继续该过程的其余部分(exit sub) 编辑: 我有以下代码帮助确定是否打开了正确的子系统 Sub FindSession(FindPlatform As Platform)

我一直在编写一些VBA脚本来执行PComm会话中的操作。 对于我最近的一次,过程是打开两个会话,两个会话都登录到不同的/单独的(子)系统。 我正在尝试了解如何制作VBA: -连接到1个会话 -检查会话在特定坐标中是否有特定值(我可以使用GetText命令) -如果不是会话,则切换到下一个打开的会话并循环 -如果是该会话,则继续该过程的其余部分(exit sub)

编辑: 我有以下代码帮助确定是否打开了正确的子系统

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
子FindSession(FindPlatform作为平台)
Dim SessionLetter作为字符串
作为字符串的Dim STRSENDTOPPLATForm
作为整数的Dim SL
调暗计时器作为日期
Const DelayInterval=“00:01:00”
关于错误GoTo Inicio
伊尼西奥:
选择casefindplatform
案例1
strsendtopplatform=“护理”
案例2
strsendtopplatform=“全球之星”
案例3
strSendToPlatform=“大型机”
案例4
strsendtopplatform=“CITSAB”
案例5
strsendtopplatform=“Cas”
案例6
strsendtopplatform=“IMS”
结束选择
对于SL=1到7
如果SL=1,则SessionLetter=“A”
如果SL=2,则SessionLetter=“B”
如果SL=3,则SessionLetter=“C”
如果SL=4,则SessionLetter=“D”
如果SL=5,则SessionLetter=“E”
如果SL=6,则SessionLetter=“F”
如果SL=7,则SessionLetter=“G”
设置sConnmgr=CreateObject(“PCOMM.autECLConnmgr”)
设置objwcc=CreateObject(“PCOMM.autECLSession”)
objwcc.SetConnectionByName SessionLetter
选择casefindplatform
案例1“护理”
如果objwcc.autECLPS.GetText(1,65,3)=“AC2”,那么
SessionNotFound=False
出口接头
其他的
设置objwcc=Nothing
如果结束
案例2“环球之星”
如果objwcc.autECLPS.GetText(1,29,9)=“GLOBESTAR”或objwcc.autECLPS.GetText(1,26,9)=“GLOBESTAR”或objwcc.autECLPS.GetText(1,26,8)=“AMERICAN”或objwcc.autECLPS.GetText(1,25,8)=“AMERICAN”,则
SessionNotFound=False
出口接头
其他的
设置objwcc=Nothing
如果结束
案例3“主机
如果objwcc.autECLPS.GetText(2,4,5)”和objwcc.autECLPS.GetText(2,4,5)=“USS10”,那么
SessionNotFound=False
出口接头
其他的
设置objwcc=Nothing
如果结束
案例4“CITSAB
如果objwcc.autECLPS.GetText(1,2,8)=“FASBRSCR”或objwcc.autECLPS.GetText(1,2,7)=“FASAUTH”,则
SessionNotFound=False
在获取字符串(1、2、8)“FASBRSCR”时执行
SendString“”,1,9,True
环
出口接头
其他的
设置objwcc=Nothing
如果结束
案例5'Cas
如果objwcc.autECLPS.GetText(3,18,18)=“持卡会员服务”或objwcc.autECLPS.GetText(3,22,3)=“CUR”或objwcc.autECLPS.GetText(2,18,18)=“持卡会员服务”,则
SessionNotFound=False
出口接头
其他的
设置objwcc=Nothing
如果结束
案例6“国际监测系统”
如果objwcc.autECLPS.GetText(1,2,5)=“WNSPC”或objwcc.autECLPS.GetText(7,24,7)=“特殊”,则
SessionNotFound=False
出口接头
其他的
设置objwcc=Nothing
如果结束
结束选择
下一个SL
它确实会检查所有打开的会话,以查看是否打开了正确的系统,但它不会选择该会话在该系统中工作。 例如,我登录到“CARE”系统和“Globstar”系统,并将“CARE”作为活动窗口。我让VBA查找“Globstar”,它确实找到了,但它随后继续向另一个开放会话发送命令;“照顾”

有人能帮我怎么做吗?
谢谢

你试过什么代码?看起来你想让我们为你写一些代码。虽然许多用户愿意为陷入困境的程序员编写代码,但他们通常只在海报已经试图自己解决问题时才提供帮助。演示这项工作的一个好方法是包括您迄今为止编写的代码、示例输入(如果有)、预期输出和实际获得的输出(控制台输出、回溯等)。你提供的细节越多,你可能得到的答案就越多。检查和。