【问题标题】:Passing an object from VBA to VB将对象从 VBA 传递到 VB
【发布时间】:2011-10-26 03:33:33
【问题描述】:

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

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

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

【问题讨论】:

    标签: vba com vb6


    【解决方案1】:

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

    【讨论】:

    • 好点 - 我没有考虑在 DLL 中创建应用程序。
    【解决方案2】:

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

    对于您所说的一种方法,这里有一些可能会有所帮助的参考资料,我从未与他们合作过,祝您好运!

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-08
      • 2012-08-26
      • 2011-06-28
      • 1970-01-01
      • 1970-01-01
      • 2011-08-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多