将 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的主要内容,如果未能解决你的问题,请参考以下文章
Excel中用宏VBA实现GBT 4761-2008 家庭关系代码转换
excel VBA 当有公式的单元格录入内容后,自动将内容粘贴为数值