从MS Office VBA填充VB6可执行文件中的字段

时间:2010-08-19 21:10:40

标签: vba vb6

我正在开发一个VB6独立应用程序,我希望能够从运行在Excel,Outlook等中的VBA模块调用。理想情况下,我希望VBA模块检查VB6应用程序是否已在运行如果没有,打开它,然后使用来自VBA模块的信息填充VB6应用程序中的某些控件(文本框,列表框等)。这甚至可能吗?我可以以某种方式为VB6应用程序创建一个引用,然后像对待任何其他对象一样对待它吗?谢谢你的帮助!

2 个答案:

答案 0 :(得分:4)

将Vb6应用程序转换为ActiveX Exe项目。 Here's the VB6 manual tutorial创建ActiveX exe。从VBA代码添加对vb6的引用。您可以从VBA调用Vb6中的对象。

使用GetObject从VBA实例化Vb6对象。这将连接到vb6应用程序的任何现有实例,或者在必要时启动新实例。

答案 1 :(得分:0)

你不能像描述和处理VB6应用程序一样对象,但你可以通过以下方式实现:

  1. 使用FindWindow API调用来确定VB6应用程序是否正在运行
  2. 使用Shell命令启动它
  3. 使用AppActivate激活VB6窗口,SendKeys将数据发送给它
  4. 这将是最简单的“开箱即用”解决方案。但是,这将非常脆弱。例如,如果您从VB6表单中删除了控件或更改了控件的Tab键顺序,那么您的应用程序将会出现故障!

    另一个选项是DDE,但我认为DDE链接旨在从VB6应用程序转到Word或Excel,而不是相反。