Session 如何在vbScript或VBA代码中硬编码主机会话ID

Session 如何在vbScript或VBA代码中硬编码主机会话ID,session,macros,ibm-midrange,host,Session,Macros,Ibm Midrange,Host,我有在AS400上使用PCOMM的新手知识。我已经在Excel中编写了15个VBA脚本,调用了AS400宏。要使程序工作,AS400必须在登录屏幕上,活动主机会话必须设置为“D”。是主持人让我感到沮丧。由于有许多人使用同一台PC,我永远不知道AS400将在任何时间点激活哪个主机会话。。。有时是“A”,有时是“B”,或者在同一屏幕上可能有多个打开的会话 下面是我的VBA脚本的前几行。是否有一种方法可以定义脚本以避免使用主机会话ID(在本例中为“D”),从而使我的脚本可以与任何ID(“a”或“B”等

我有在AS400上使用PCOMM的新手知识。我已经在Excel中编写了15个VBA脚本,调用了AS400宏。要使程序工作,AS400必须在登录屏幕上,活动主机会话必须设置为“D”。是主持人让我感到沮丧。由于有许多人使用同一台PC,我永远不知道AS400将在任何时间点激活哪个主机会话。。。有时是“A”,有时是“B”,或者在同一屏幕上可能有多个打开的会话

下面是我的VBA脚本的前几行。是否有一种方法可以定义脚本以避免使用主机会话ID(在本例中为“D”),从而使我的脚本可以与任何ID(“a”或“B”等)一起工作

>


我在文档中发现:

Dim SessObj as Object
Dim autECLConnList as Object

Set autECLConnList = CreateObject("PCOMM.autECLConnList")
Set SessObj = CreateObject("PCOMM.autECLSession")

' Initialize the session
autECLConnList.Refresh
SessObj.SetConnectionByHandle(autECLConnList(1).Handle)

SessObj.StopCommunication()

更多。这有点像从消防水管里喝水。

Set SessObj=CreateObject(“PCOMM.autECLSession”)
,在您的代码中,SessObj用于设置需要连接的会话。关于您向Jmarkmurphy提出的问题,注释掉了
“SessObj.StopCommunication()”
,这与转到PCOMM emulator通信菜单并选择断开连接具有相同的效果


最后,关于您的原始问题,
“autECLSession.autECLOIA.WaitForAppAvailable”
上的错误,正如一开始提到的,您已经设置使用
“SessObj”
连接会话,因此,
“autECLSession”
根本没有用于连接任何连接,这就是为什么会弹出错误“尚未为此对象设置会话”

谢谢。遗憾的是,这并没有解决我的问题。添加了您提供的代码snipet,VBA在下面标有“XXXXX Dim AUTECLSERSESSOBJECT Dim SESSOBJECT AUTECLCONLIST As object set AUTECLCONLIST=CreateObject”(“PCOMM.AUTECLCONLIST”)的行处停止设置SessObj=CreateObject(“PCOMM.autECLSession”)'autECLConnList.Refresh SessObj.SetConnectionByHandle(autECLConnList(1.Handle)设置autECLSession=CreateObject(“PCOMM.autECLSession”)'autECLSession.SetConnectionByName(“D”)“注释掉了”“autECLSession.autECLOIA.WaitForAppAvailable”“XXXXX我看了你的图片。为什么你有
设置SessObj=CreateObject(“PCOMM.autECLSession”)
设置autECLSession=CreateObject(“PCOMM.autECLSession”)
?我只会使用其中一个。您只会使用AUTECLSECION,但SessObj有预期的会话对象。嗨,Jmarkmurphy…多亏了您,我解决了我的问题…我已经完成了您建议的更改,我的所有20个自动化脚本都工作正常。我还有最后一个问题:我注释掉了“SessObj.StopCommunication()”。该代码应该放在自动化脚本的最后吗?我看不到不使用该行的任何负面影响。再次感谢…请不要插入映像,从映像调试代码很困难。请从您的环境中剪切并粘贴代码。
Dim SessObj as Object
Dim autECLConnList as Object

Set autECLConnList = CreateObject("PCOMM.autECLConnList")
Set SessObj = CreateObject("PCOMM.autECLSession")

' Initialize the session
autECLConnList.Refresh
SessObj.SetConnectionByHandle(autECLConnList(1).Handle)

SessObj.StopCommunication()