将对象从VBA传递到VB

时间:2011-08-12 20:52:51

标签: vba com vb6

我使用支持VBA的会计软件包。当会计系统运行VBA宏时,它会传递一个“会话”对象,该对象包含可用于访问会计包的其他部分的登录信息。我可以创建一个VB6应用程序并引用定义了此Session类型的COM库。当我运行VB6应用程序时,我必须初始化Session变量,这涉及到会计系统的登录,我最终使用另一个并发许可证。如果我坚持使用VBA,我没有这个限制但是我坚持使用VBA。

我想弄清楚的是,如果有一种方法可以让这个Session对象已经初始化的VBA宏将这个Session对象发送到VB程序。我想我可以创建一个VBA宏调用并传递Session对象的DLL。然后DLL可以自己执行VB程序。 VB程序(我希望)可以回调DLL来访问Session变量。我想如果VB程序被DLL调用,VB程序应该可以访问共享内存。

所以问题是:我可以让VBA程序调用DLL,将COM对象传递给该DLL,让该DLL调用VB程序并让该COM对象可用于调用的VB程序吗?

2 个答案:

答案 0 :(得分:1)

我会说不。您应该能够创建一个可以访问传入的Session对象的VB6(甚至.NET)DLL,但是您无法将该对象从会计包(为您创建并初始化Session对象)中传递出来。规避许可。但是你可以把你需要的逻辑放在DLL中。

答案 1 :(得分:0)

让我来看看这个。我首选的方法是使用XL-DNA或其他类似程序在.NET中完成所有操作(我只是坚持使用XL DNA,因为它是免费的并且效果很好)。有付费程序可以让工作更轻松。

对于你正在谈论的方法,这里有几个可能有帮助的参考资料,我从来没有和他们一起工作过这么好运!

http://support.microsoft.com/kb/317535

http://www.xtremevbtalk.com/showthread.php?t=303014