我正在开发一个VB6独立应用程序,我希望能够从运行在Excel,Outlook等中的VBA模块调用。理想情况下,我希望VBA模块检查VB6应用程序是否已在运行如果没有,打开它,然后使用来自VBA模块的信息填充VB6应用程序中的某些控件(文本框,列表框等)。这甚至可能吗?我可以以某种方式为VB6应用程序创建一个引用,然后像对待任何其他对象一样对待它吗?谢谢你的帮助!
答案 0 :(得分:4)
将Vb6应用程序转换为ActiveX Exe项目。 Here's the VB6 manual tutorial创建ActiveX exe。从VBA代码添加对vb6的引用。您可以从VBA调用Vb6中的对象。
使用GetObject从VBA实例化Vb6对象。这将连接到vb6应用程序的任何现有实例,或者在必要时启动新实例。
答案 1 :(得分:0)
你不能像描述和处理VB6应用程序一样对象,但你可以通过以下方式实现:
Shell
命令启动它AppActivate
激活VB6窗口,SendKeys
将数据发送给它这将是最简单的“开箱即用”解决方案。但是,这将非常脆弱。例如,如果您从VB6表单中删除了控件或更改了控件的Tab键顺序,那么您的应用程序将会出现故障!
另一个选项是DDE,但我认为DDE链接旨在从VB6应用程序转到Word或Excel,而不是相反。