有没有一种方法可以将VBA函数列表“编译”到DLL文件中?

问题描述 投票:0回答:1

我们在应用程序(不是Excel)中的脚本中有一些自定义的VBA函数,它们被该应用程序中的其他脚本调用。我们正在共享脚本,但宁愿不公开具有功能的单个脚本。该应用程序仅调用嵌入式宏或dll,因此我在考虑将这些函数“编译”为dll文件,并且该项目很小,因此我们避免购买任何东西。也许转移到VB.Net?任何想法都欢迎!

vba vb.net dll
1个回答
0
投票

您可以在Office 2000 Developer Edition中做到这一点...从那时起,就无法将VBA代码编译为.DLL,VBA嵌入在宿主文档中。

您可以将您的VBA代码移植到.NET-我热烈推荐在VB.NET上使用C#,因为VB.NET语法可能看起来与VBA中的功能“非常接近”,因此您可能会想起它来可以“正常工作”,但是它具有欺骗性,您不会编写VB.NET,而是赞美VB6。

仅列举一些隐式后期绑定,隐式/未声明变量,全局函数;所有这些都是VBA无缝处理的,您绝对不需要.NET代码。默认/隐式访问修饰符被颠倒(VBA:Public ,. NET:Private),隐式ByRef变为隐式ByVal,...如此之多的小事情使得抓取VBA代码并将其编译到VB中.NET的体验非常令人沮丧。

我会建议unit-testing the existing VBA code,然后将这些单元测试移植到新的.NET解决方案中,并编写所有必要的代码(从头开始)以使测试通过.NET。

如果VBA代码具有过多的依赖关系,并且无法可靠地进行单元测试,则需要对其进行重构以首先允许适当的测试覆盖:完整的单元测试套件记录了VBA代码的每个行为和边缘情况。功能是可靠地确保原始代码和新代码都做完全相同的事情的唯一方法。

或者您可以牛仔它,只需将VBA代码移植到.NET。

© www.soinside.com 2019 - 2024. All rights reserved.