我工作的公司是在 Excel 表格上运行的。其中一些表格嵌入了某种形式的 VBA 代码。我正在对它们进行一些维护,但感觉确实过时了。
Office VBA 会发生什么?
为什么微软没有为 Office 发布嵌入式 .NET 宏语言?
简短的回答:你可能暂时还好。
长答案:VB6(这就是 VBA 的真正含义)几乎是一种死的、不受支持的语言,最后一次更新是十年前的同一时期的 IDE。它仍然存在,因为它嵌入在 Office 中,如果删除或更改 VBA,数百万个 Office 应用程序将停止工作。更不用说数百万非常恼火的用户了。
那么如何前进呢?Office 可以在托管代码中重新实现吗?微软真的想这样做吗?他们是否会做出比 Ribbon 更大的向后兼容性中断,并放弃宏记录和解释嵌入式代码的概念?我只是看不到我的用户在 Visual Studio 中使用 COM 互操作和诸如此类的东西使用 VB.NET。
如果我必须在一个结果上投入资金(即使那时我也不想赌太多),我会关注动态语言运行时以及多种语言处于不同准备状态以运行它的事实。假设 DLR 以及 Office 应用程序 COM 模型的一些合适的替换或包装器将替换 VB6 运行时。此外,假设 VBA 被实现为 DLR 语言。现在,传统 VBA 将继续运行,只是在不同的(现代的、受支持的)解释器上运行,我们可以用 Python、Ruby 或任何其他我们喜欢的 DLR 语言编写 Excel 宏。
但这只是我最好的猜测——我不知道它是否真的会发生。不过,我当然希望能够在 Ruby 中编写 Excel 宏。
他们正在为下一版 Office for Mac 添加 VBA 支持,所以我怀疑它会存在一段时间。
我想说现在是你深入研究 .NET 的时候了。
您可以从 Excel 调用 .NET 库。
好吧,我是一位经验丰富的 .NET 程序员。我尝试了 Office 工具,它使用起来很痛苦,它需要您分发程序集(LOL。)财务或交付无法使用它。在点击卸载之前,我们笑得很开心。
我们尝试了 Google Docs,它非常灵活,但仍然不如 Excel 宏强大。微软自 2000 年以来一直停滞不前,而谷歌正在快速发展,所以几年后答案可能会有所不同。由于所有的安全废话,VBA 本身在今天实际上已经不那么强大了。
最后,我仍然在他们的工作表中获得了一个按钮来做他们想做的事情,如果他们愿意,他们可以对代码进行微小的更改。奇怪的是,VBA 是我怀疑世界上所有财务部门都在使用的方法。
昨天我也遇到了同样的想法。多么巧合。突然间,我兼职工作的老板正在寻找我 3 年前创建的 Excel 应用程序(2007 年离开公司,然后作为兼职员工回到他们那里,以增加我的全职工作)。我记得我已将其转换为 MS Access 2003 应用程序;但该应用程序需要更新以满足新的要求。你猜怎么着,我想我已经忘记了VBA。现在不是返回并从头开始重新学习的合适时机。我正在继续使用 C# 2.0/3.0。我敢肯定,用 C# 3.0 重建 MS Access 2003 应用程序将是一次很好的学习体验!
@IainMH 是对的……“是时候深入了解 .NET”了
在 Excel 出现之前,VBA 是值得学习的,因为无论您在 Excel 中做什么,VBA 都可以自动执行该操作以节省您的时间并减少出错的机会。您可以简单地运行代码并坐在椅子上休息任务将由 VBA 代码完成。... 使用 VBA,您可以学习 SQL 和 Excel(如果您已经知道那就太好了)。