【问题标题】:How to Get around Hard Coding the Host Session ID in vbScript or VBA code如何绕过在 vbScript 或 VBA 代码中对主机会话 ID 进行硬编码
【发布时间】:2020-03-04 16:22:24
【问题描述】:

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

我的 VBA 脚本的前几行如下。有没有一种方法可以定义脚本以避免使用主机会话 ID(在本例中为“D”),以便我的脚本可以使用任何 ID(“A”或“B”等)

     Sub APVCHDET()
     Set autECLSession = CreateObject("PCOMM.autECLSession")
     autECLSession.SetConnectionByName ("D")

> enter image description here

【问题讨论】:

  • 请不要插入图像,很难从图像中调试代码。而是从您的环境中剪切并粘贴代码。

标签: session macros ibm-midrange host


【解决方案1】:

我在文档中找到了这个:

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()

更多here。不过,这有点像从消防水管里喝水。

【讨论】:

  • 谢谢。可悲的是它并没有解决我的问题。添加了您提供的代码片段,VBA 停在该行,下面标有 'XXXXX Dim autECLSession As Object Dim SessObj As Object Dim autECLConnList As Object Set autECLConnList = CreateObject("PCOMM.autECLConnList") Set SessObj = CreateObject("PCOMM. autECLSession") ' autECLConnList.Refresh SessObj.SetConnectionByHandle (autECLConnList(1).Handle) 设置 autECLSession = CreateObject("PCOMM.autECLSession") 'autECLSession.SetConnectionByName ("D") '注释掉'' ' autECLSession.autECLOIA.WaitForAppAvailable ' XXXXX
  • 我看了你的图片。为什么有Set SessObj = CreateObject("PCOMM.autECLSession")Set autECLSession = CreateObject("PCOMM.autECLSession")?我只会使用其中之一。而且您只使用 autECLSession,但 SessObj 具有预期的会话对象。
  • 嗨,Jmarkmurphy...感谢您,我已经解决了我的问题...我已经做出了您推荐的更改,我的所有 20 个自动化脚本都运行良好。我有最后一个问题:我注释掉了“SessObj.StopCommunication()”。该代码是否应该放在自动化脚本的最后?我没有看到不使用那条线的任何不利影响。再次感谢...艾尔
【解决方案2】:

Set SessObj = CreateObject("PCOMM.autECLSession"),在你的代码中,SessObj 用于设置需要连接的会话。关于你向 Jmarkmurphy 提出的问题,注释掉 "SessObj.StopCommunication()",这与进入 PCOMM 仿真器通信菜单并选择断开连接具有相同的效果。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-23
    • 2012-03-12
    相关资源
    最近更新 更多