Excel 2010 中的“表单控件”和“ActiveX 控件”有啥区别?

Posted

技术标签:

【中文标题】Excel 2010 中的“表单控件”和“ActiveX 控件”有啥区别?【英文标题】:What is the difference between "Form Controls" and "ActiveX Control" in Excel 2010?Excel 2010 中的“表单控件”和“ActiveX 控件”有什么区别? 【发布时间】:2013-03-05 12:17:01 【问题描述】:

使用 Microsoft Excel 2010,我注意到有两种可以插入到文档中的控件:Form ControlsActiveX Controls

它们有什么区别?

【问题讨论】:

表单控件被嵌入到 Excel 本身中。 ActiveX 控件从单独的 DLL 加载。您可以添加额外的 ActiveX 控件,而不是表单控件。 感谢@HansPassant!据我了解,我应该从表单控件开始,而无需依赖 ActiveX 控件即可完成工作。 在这里查看我的详细答案:Overview of differences between Form Controls and ActiveX Controls in Excel 【参考方案1】:

Google is full of information on this。正如 Hans Passant 所说,表单控件内置于 Excel 中,而 ActiveX 控件是单独加载的。

通常您会使用Forms 控件,它们更简单。 ActiveX 控件允许更灵活的设计,并且应该在使用基本的Forms 控件无法完成工作时使用。

很多用户的电脑被default won't trustActiveX,它会被禁用;这有时需要手动添加到信任中心。 ActiveX 是基于微软的技术,据我所知,Mac 不支持。如果您(或您向其提供工作簿的任何人)决定在 Mac 上使用它,这也是您必须考虑的事情。

【讨论】:

我一直在寻找这种答案/解释。现在我了解了表单控件相对于 ActiveX 的优缺点。我将使用表单控件,而可以使用它们完成工作。谢谢山姆,谢谢@HansPassant 没问题 - 很高兴为您提供帮助。如果您对提供的答案感到满意,请记住将其标记为如此,这样其他人就知道提供了答案。 没问题,我习惯耐心等待其他意见。 @Sam,我觉得你的回答最有帮助。但也许您愿意在您的答案中再添加一件事,而我不得不以艰难的方式找出答案。 ActiveX 控件有时会“行为不端”并自动增加或调整大小。 mrexcel.com/forum/excel-questions/… 或 blogs.technet.com/b/the_microsoft_excel_support_team_blog/… 有人在 mrexcel.com 线程中发布了一个指向 *** 线程 excel-the-incredible-shrinking-and-expanding-controls 的链接,该线程对 ActiveX 控件的问题进行了很多讨论。【参考方案2】:

要知道的一个主要区别是 ActiveX 控件显示为可以在代码中使用的对象 - 尝试将 ActiveX 控件插入工作表,调出 VBA 编辑器 (ALT + F11),您将能够以编程方式访问控件。您不能对表单控件执行此操作(必须改为将宏显式分配给每个控件),但表单控件更易于使用。如果您只是在做一些简单的事情,那么您使用哪个并不重要,但对于更高级的脚本,ActiveX 有更好的可能性。

ActiveX 也更加可定制。

【讨论】:

【参考方案3】:

另外值得注意的是,ActiveX 控件仅适用于 Windows,而表单控件则适用于 Windows 和 MacOS 版本的 Excel。

【讨论】:

【参考方案4】:

请注意,在某些情况下,单击表单控件或 Active X 控件会为同一个宏提供两种不同的结果 - 情况并非如此。我发现 Active X 更可靠。

【讨论】:

如果您可以提供一个宏,使用 ActiveX / Form 控件提供不同的结果,这将是一个答案。

以上是关于Excel 2010 中的“表单控件”和“ActiveX 控件”有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

Java 获取Excel中的表单控件

C#/VB.NET 获取Excel中的表单控件

EXCEL 2010学习笔记—— 动态图表

Java 添加删除Excel表单控件

Excel 表单控件和 ActiveX 控件的区别

通过虚拟机查看时,Excel 2003 工作簿表单控件有时会调整大小