提问人:Robert 提问时间:9/18/2008 最后编辑:ZygDRobert 更新时间:7/19/2021 访问量:6405
将 Excel 4 宏转换为 VBA
Convert Excel 4 macros to VBA
问:
我有一个旧的 Excel 4 宏,我用它来运行月度发票。它大约有 3000 行,并且有许多 Excel 5 对话框工作表(用于对话框)。我想知道将其更改为 VBA 的最简单方法是什么,以及是否值得。另外,如果我将其转换为VBA,如何从中创建一个独立的应用程序?
答:
这是关于这个话题的一个很好的文章: http://msdn.microsoft.com/en-us/library/aa192490.aspx
您可以在以下位置免费下载 VB2008-Express: http://www.microsoft.com/express/default.aspx
AFAIK 不可能以某种方式转换它。您基本上必须在 VBA 中重写。
如果已转换为 VBA,则无法作为独立应用程序运行。正如 VBA 声明 Visual Basic for Application 一样,它存在于应用程序(Word、Excel、Scala 等)中。
您必须学习一种标准语言(而不是宏语言)才能创建独立的应用程序。但你必须学习的不仅仅是语言本身。您必须学习不同的技术,例如数据库处理而不是 Excel 工作表处理、打印而不是 Excel 打印等。所以基本上你会失去很多功能,如果你使用Excel,这是显而易见的。
我以前尝试过,最后你确实需要重写它,正如 Biri 所说。
当我们公司从 Windows NT 升级到 Windows XP 时,我做了相当多的工作。我经常发现,完全不看旧代码,从头开始更容易。您可以花费大量时间尝试弄清楚 Excel 4 做了什么,尤其是在“奇怪”对话框表示法方面。最后,如果您知道输入是什么和输出,那么重写通常更省时、更有效、更干净。
是否使用 VBA 在某些方面是另一个问题,但 VBA 相当强大且可扩展,因此尽管我宁愿在许多情况下使用 .NET 等其他工具,但它运行良好且易于部署。
就值得吗?如果您可以说您永远不需要再次更改 Excel 4 宏,那么也许不需要。但是在商业中,总会有一些东西发生变化,例如税率,尤其是年终的事情。考虑到很难找到支持 Excel 4 的 somone 甚至找到有关它的文档,我会说不迁移到 VBA 是有风险的,但这是需要平衡的事情。
(免责声明:我开发了 Excel-DNA 库)
不要将宏移动到 VBA(VBA 使用不同于 Excel 宏语言的 COM 自动化对象模型),而是将其移动到使用 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。
评论