你可以在Excel中创build应用程序吗?

我的朋友说他要在Excel里创build一个应用程序。 我告诉他,也许他的意思是macros,但他似乎相信他可以创build一个典型的Excel内部的CRUD应用程序INSIDE。

这是真的?

你是对的。 您可以使用Excel中的VBA和某些表单function在Excel中创build一个具有UI的全functionCRUD过程,并且可以将该数据保存到工作簿或其他存储区域(文本,XML,Access,另一个DBMS)。 这本身并不是一个完整的应用程序 ,因为它仅限于在Excel应用程序中运行,但它不仅仅是一个简单的“按顺序执行这些预定义的步骤”的macros。

当然。 你为什么要?

简单的答案是,使用VBA,您可以创build可以与其他Office应用程序或.NET / COM代码连接的后台工作人员方法。 但是,如果要将复杂的业务逻辑添加到Excel表示层,我首先想到的是使用C#创build应用程序,并使用Office interop的.NET Framework包装器。 第一个好处是你使用Excel SOLELY进行演示,支持MVC-ish软件devise。 其次,你把代码放在你期望find的地方; 在代码中,没有embedded到文档中。

当然,你可以……使用VBA,用数据库中的数据填充单元格,当单元格更改值更新数据库时

但是你为什么在这里是更大的问题

这是真的。 VBA可以召唤COM,可以做很强大的事情。 我使用了一个excel文件来接收由内部macrosbuild立的报告,它search许多远程数据库来分组和聚合信息。 您可以修改registry,使其运行程序,使其重新启动PC,显示消息,创build和编辑文件,使其使用Word或Access,调用.NETfunction。 任何不需要复杂渲染的东西。

您可能会使用Excel / VBA,因为:

  1. 你有VBA – 一个完全加载的编程语言(尽pipeOO需要工作)。
  2. 标量函数被重载以处理数组。
  3. 一个体面的IDE和debugging工具。
  4. Excel提供了一个丰富的事件驱动的平台,并通过电子表格行为来扩展VBA的function,这种行为只是“正好发生”,但是在传统语言中需要大量的编码。
  5. 窗体小部件,你可以放在任何地方,而不只是在窗体上。
  6. 简单但足够的vectorgraphics。
  7. 图表,图表和更多图表 – 都是dynamic的。
  8. 自动持久性(如果需要的话)可以连接到几乎每个文件和数据库介质,包括XML和云服务。
  9. 关系表是一个本地结构。

如果不是午夜过去了,我相信我可以想一些更好的理由,但嘿….