【问题标题】:Display Excel inside VB6 / VB.NET Form & work with Excel without excel menu在 VB6 / VB.NET 表单中显示 Excel 并在没有 excel 菜单的情况下使用 Excel
【发布时间】:2013-09-10 10:40:54
【问题描述】:

我有一个启用宏的 Excel 工作表。我想在没有 excel 菜单标题的 VB6/VB.NET 表单中显示 Excel 工作表,并在表单中执行 excel 活动。

请注意,当输入某些单元格时,我需要执行一些宏操作...

我的目标是创建一个独立的 VB6/VB.Net 表单,其中应显示 excel 单元格以执行宏操作。

我尝试搜索任何样本,但没有成功。应该是这样的……

谁能提示我实现这一目标?

【问题讨论】:

  • 如果您接受在 VB6 独立应用程序中不可能的事实并决定使用 VBA,请查看this link :)
  • @mehow : 感谢您的链接 :) 是否可以使 VBA 表单独立?
  • 不,不是。 VBA 集成到 Office 中,需要 VBE 环境才能运行。为什么不使用外部库在 VB6 中实现用户窗体上的 excel 显示部分?
  • @mehow:你能告诉我这里的外部库是什么意思吗?
  • logan,它应该可以在任何电脑上工作,因为 ActiveX 已经添加到开发机器上的程序集中。创建一个并将其发送到伴侣的机器上,然后查看自己

标签: vb.net vba excel vb6


【解决方案1】:

据我所知 - 这是不可能的。原因是您不能在 VBA 中对 excel 窗口进行子类化。 如果您使用 VB.NET 或 VB6 在 excel 之外进行编程,这是有可能的,但可能效果不佳。 如果您只想显示工作表中的一些数据并对它们执行一些小操作,您可以通过 EPPLUS 库读取数据,将它们显示为数据表(EPPLUS 可以在数据表和 excel 文件之间转换),执行您的操作并之后将它们保存到文件中。但这仅适用于 VB.net

【讨论】:

  • 我只希望在 VB6 中使用它。为什么我想要的是,当输入某些单元格时,我需要执行一些宏...
  • VB6 不再受支持,因此您应该将其移植到更新的版本。如果你想运行宏,你可以在 excel 中使用 VBA 轻松完成,而无需在某处嵌入 excel。 Google for VBA 和事件。
  • 我的目标是创建一个独立的 VB6/VB.Net 表单,其中应显示 excel 单元格以执行宏操作(为了更清晰,问题已更改)
  • @logan 除非您使用模拟 excel 电子表格的图形界面编写自己的库,否则这是不可能的。
  • 行不通。抱歉,有时您应该接受该答案并寻找其他可行的解决方案。
【解决方案2】:

去年我对此做了很多研究。没有可用的软件包来执行您所要求的,由 MS 提供或免费提供,但是,您可以在 vb.net 中创建一个 datagridview (DGV) 并通过 ADO.NET 将数据加载到 DGV 中。加载到单元格中的数据将反映您的电子表格。然后,当您修改 DGV 中的单元格时,有一个标签,如您所示,将数据更改更新回 excel 表。

http://social.msdn.microsoft.com/Forums/en-US/7a1c828d-04ed-4a8d-927d-3649f29d2060/import-data-from-excel-sheet-into-datagridview

至于调用宏,使用excel互操作功能调用宏:

http://social.msdn.microsoft.com/Forums/office/en-US/2e33b8e5-c9fd-42a1-8d67-3d61d2cedc1c/how-to-call-excel-macros-programmatically-in-c

您所做的事情可能会有一些第三方支持,但这当然需要花钱: http://www.componentone.com/SuperProducts/SpreadStudio/?gclid=CLKIy6TqwLkCFYZlOgodhToAZg

【讨论】:

  • @logan 您必须自己处理 DGV 中的格式设置,因为 ADO.net 只会提取数据。但是,我想您可以使用 interop.excel 循环工作表数据/读取单元格样式,然后尝试将其转换为 DGV msdn.microsoft.com/en-us/library/…
猜你喜欢
  • 2021-10-07
  • 2011-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多