我正在开发一个用于嵌入罗克韦尔自动化工厂谈话视图的ActiveX控件。 (见ActiveX DLL Error: Solved,看看我开始有多棒!)
目前我有一个似乎嵌入主机系统的ActiveX控件,但是没有完全集成到VBA进程中。我相信这是因为我没有实现一些必需的特定COM接口,但我没有关于它是什么的文档。我知道像Microsoft Forms 2.0控件那样的标准MS控件执行实现所需的界面并完全集成。
我缺少的关键功能涉及我需要设置的属性,以便我的VBA代码实际看到ActiveX对象。打开Factory Talk屏幕上放置的任何 activeX控件的属性面板时可以看到此属性,但在查看(例如)Excel中嵌入的ActiveX控件的属性时却看不到。因此,我可能试图追逐一些定制的罗克韦尔实施。我希望SO能够在识别其实现的功能的基础上帮助我找到我想要的东西。
现在到了实际的财产。在Factory Talk中,该属性称为“ExposeToVBA”,其类型为“long”。您可以从下拉列表中选择3个值:
Not Exposed - When set to this, the controls name is not even visible to VBA code
Type Info Extension - Not sure what this does
VBA Control - VBA code can see and interact with the control.
当我为我的控件选择“Not Exposed”以外的任何内容时,我会收到一个没有文字的警告对话框。对于其他控件,我需要将其设置为“VBA Control”,以便在VBA代码中与它进行交互(d'oh)
我怀疑此属性的值被转换为对目标控件上的ActiveX接口的一些调用。
问题
我想要做的是确定哪些接口类似于“Forms 2.0 Label”实现与上述功能相匹配的接口。也许我可以将其转换为基于C#的控件(基于C# ActiveX control (CSActiveX))
我知道这是一个很长的镜头,但我会感激任何和所有的建议