我目前正在Microsoft Access中创建一个应用程序,该应用程序引用了"对于regis图形的反思"图书馆。 基本上,下面的代码将创建一个新的反射实例,它是一个连接到工作中的主机系统的外部telnet应用程序。从那里我可以将vba命令传递给它,这样我就可以在telnet应用程序中自动执行一些步骤。
Dim RIS as object
Set RIS as New Reflection4.session
RIS.visible = True
With RIS
...do some stuff
end with
以上工作正常,问题是当我在我的程序中使用其他模块或程序时,我似乎无法让VBA指向已创建的现有对象,如果我有多个打开的话。
例如,我可能已经打开了一个现有的telnet会话,我正在做我的一些常规工作,然后我运行我的VBA应用程序,然后尝试创建自己的会话来工作。下面的VBA代码...... < / p>
Set RIS = GetObject(, "reflection4.session")
...似乎不够聪明,无法弄清楚应该看哪个telnet窗口。从我可以告诉它只是锁定到创建的第一个。这就是为什么我总是必须确保在运行任何自动VBA应用程序之前关闭任何现有的telnet会话,这很痛苦。
上面的getobject命令将[pathname]和[class]作为其两个输入。 所以我到目前为止工作的是pathname = blank和class =&#34; reflection4.session&#34;
有没有办法用指针或名称创建新的Reflection4.session所以我可以稍后引用它们或者以另一种方式使用getobject,这样我就可以找到我真正需要的实际会话,这样我就可以保持其他telnet会话的开放状态打扰他们? 我是否必须遍历某种对象集合并找到最新的对象???
答案 0 :(得分:0)
如果您只需要查找自己在自己的代码中创建的会话,就可以在自己的收藏中跟踪会话。
'in a module
Global RefSessions as New Collection
'when you're creating
Dim RIS As Reflection4.session
Dim cKey as String
Set RIS as New Reflection4.session
RIS.visible = True
With RIS
'...do some stuff
End with
cKey = "SomeUniqueIdentifier"
RefSessions.Add RIS, cKey
'when you're using it later, instead of GetObject
Set RIS = RefSessions("SomeUniqueIdentifier")
With RIS
'...do other stuff
End With
'...or...
Set RIS = RefSessions(2)
With RIS
'...do other stuff
End With
'...or...
For Each RIS in RefSessions 'loop through every session object added
With RIS
'...do other stuff
End With
Next RIS