将 Excel 4 宏转换为 VBA

Posted

技术标签:

【中文标题】将 Excel 4 宏转换为 VBA【英文标题】:Convert Excel 4 macros to VBA 【发布时间】:2010-09-10 14:09:44 【问题描述】:

我有一个旧的 Excel 4 宏,用于生成月度发票。它大约有 3000 行,并且有许多 Excel 5 对话框工作表(用于对话框)。我想知道将其更改为 VBA 的最简单方法是什么以及是否值得。另外,如果我将它转换为 VBA 后,如何从中创建一个独立的应用程序?

【问题讨论】:

【参考方案1】:

我之前已经尝试过,最后你确实需要按照 Biri 所说的重写它。

当我们公司从 Windows NT 升级到 Windows XP 时,我做了很多这项工作。我经常发现根本不看旧代码并从头开始会更容易。你可以花很多时间来弄清楚 Excel 4 做了什么,尤其是围绕“奇怪的”对话框符号。最后,如果您知道输入和输出是什么,那么重写通常会更高效、更简洁。

在某些方面是否使用 VBA 是另一个问题,但 VBA 相当强大且可扩展,因此尽管我宁愿在许多情况下使用其他工具(如 .NET),但它运行良好且易于部署。

在这方面值得吗?如果您可以说您永远不需要再次更改您的 Excel 4 宏,那么也许不需要。但是在商业中,总会有一些变化,例如税率,尤其是年终的事情。鉴于很难找到支持 Excel 4 甚至找到有关它的文档的人,我会说不迁移到 VBA 是有风险的,但这是需要平衡的事情。

【讨论】:

【参考方案2】:

(免责声明:我开发 Excel-DNA 库)

与其将宏移至使用不同于 Excel 宏语言的 COM 自动化对象模型的 VBA,不如将其移至运行 Excel-DNA 库的 VB.NET(或 C#)。

Excel-DNA 允许您使用与宏语言非常相似的 C API。对于每个宏命令,例如您的对话框,都有一个采用相同参数的 C API 函数。例如,DIALOG.BOX 的等效项是 xlfDialogBox - 此线程中有一些讨论和示例:http://groups.google.com/group/exceldna/browse_thread/thread/53a8253269fdf0a5。

这一举措的一大优势是您可以逐渐更改部分代码以使用 COM 自动化接口 - Excel-DNA 允许您混合和匹配 COM 接口和 C API。

【讨论】:

【参考方案3】:

AFAIK 不可能以某种方式转换它。你基本上必须用 VBA 重写。

如果您已转换为 VBA,则无法作为独立应用程序运行。正如 VBA 所说的 Visual Basic for Application,它存在于应用程序(Word、Excel、Scala 等)中。

您必须学习标准语言(不是宏语言)才能创建独立的应用程序。但是你必须学习的不仅仅是语言本身。您必须学习不同的技术,例如数据库处理而不是 Excel 工作表处理、打印而不是 Excel 打印等等。所以基本上你会失去很多功能,如果你使用 Excel,这是显而易见的。

【讨论】:

【参考方案4】:

这是一篇关于这个主题的好文章:http://msdn.microsoft.com/en-us/library/aa192490.aspx

您可以在http://www.microsoft.com/express/default.aspx免费下载VB2008-Express

【讨论】:

以上是关于将 Excel 4 宏转换为 VBA的主要内容,如果未能解决你的问题,请参考以下文章

将 VBA 简单宏转换为 LibreOffice 宏

Excel中用宏VBA实现GBT 4761-2008 家庭关系代码转换

excel VBA 当有公式的单元格录入内容后,自动将内容粘贴为数值

如何将我的 VBA 宏转换为 C# 以在 Windows 窗体应用程序中使用?

excel编程问题

Excel VBA 宏,用于过滤从连接的 SQL 表中提取的时间戳数据