【问题标题】:Securing VBA or moving into VB.NET, C#, other? [duplicate]保护 VBA 或迁移到 VB.NET、C# 或其他? [复制]
【发布时间】:2020-09-10 13:18:40
【问题描述】:

我认为自己是一个非常称职的 Excel VBA 程序员。在我职业金融生涯的几年中,我创建了很多有用的程序(UDF、一些具有多种用户表单的小型或大型应用程序以及许多易于操作的小型应用程序)。

我决定向前迈出一步,尝试通过我的工作获利。我看过 VBA 混淆器、VBA 编译器和类似的东西,但遗憾的是,对混淆器的保护似乎很弱(至少我是这么认为的,我不能发表评论,因为我只知道 VBA 语言,我不是计算机科学大师)或在编译器的情况下,编译会大量修改我的代码,以至于 1/3 无法正常工作(我曾尝试调试它,但无论我做什么都无法正常工作)。

我检查了我拥有的代码量,大约是 13-14 千行。 现在 - 我是否值得甚至有可能从头开始将所有这些东西翻译成 VB.NET 或 C#? 我对其中任何一个都没有经验,我只在 VBA 中编程过。我一直在阅读,由于用户表单的差异,没有 UDF,我在我的子程序和类似的东西中使用它,似乎几乎不可能转换和重写代码。如果可能的话,有人能指出我正确的方向吗,什么是更好的选择?

我现在很迷茫,因为我没有经验,而且我知道没有开发人员可以“引导”我进入这个或那个方向。什么是“翻译”我的 VBA 代码并从中制作工作应用程序的好方法? 我知道这并不容易,但如果我需要几个月的下班后工作,我会去做。问题是我不想完全浪费时间,我想把它做好。

感谢您的所有想法和帮助。我希望我的信息不是完全题外话。

【问题讨论】:

  • 我不会丢弃我的 VBA 代码。我很久以前就决定 c# Interop 既慢又麻烦。并且需要不同版本的 Interop,具体取决于您使用的 Word 版本。 Interop 使用脚本语言作为需要 Excel 解析文本语言的接口。因此,在读取和写入单元格值时,我在 c# 中使用 ole 连接字符串作为接口。每当我需要做更复杂的事情时,我仍然使用 VBA,这在大多数情况下非常有效。即使 VBAI 从未使用过 OPEN XML(这是一个选项),仍有一些事情无法自动化。

标签: c# excel vba vb.net


【解决方案1】:

这感觉像是一个主题问题,因为它无法如实回答;我们只能在很大程度上给你我们的意见。我会挑出那些可以用事实来回答的部分:

现在 - 我是否值得甚至有可能从头开始将所有这些东西翻译成 VB.NET 或 C#?

值得,我无法回答。价值是上下文相关的——看看有多少人从免费提供东西中获得乐趣。

可能的;当然。您的 VBA 代码封装了一个过程、一个概念,它可以做有用的工作并使您的生活更轻松。它也可以让别人的生活更轻松;他们会付钱给你让他们的生活更轻松吗?他们能把你的工作整合到他们的工作中吗?你知道如何以一种让他们实际使用的方式让他们可以使用你的作品吗?

您可以将所有这些东西放入 .NET,但不要认为这会使您的工作更难进行逆向工程。如果你想让你的东西不受逆向工程的影响,那就出售它所做的数据处理而不是出售代码。创建一个计算人们想要的所有东西的网络服务,不要卖给他们一个他们可以集成和使用的 DLL,但是他们的孩子可以反编译并作为竞争对手的产品发布。这并不是说这种情况在商业中也发生得一样多——企业往往配备有责任心的人,他们会意识到他们何时许可某人的作品并使用它,如果他们只是撕下它并免费拿走它,他们就会刺伤自己的人。背部。如果您正在为企业创建组件以供许可和使用,那么与共享软件类型许可给最终家庭用户相比,您可能遇到的盗版问题更少。但是您可能仍然可以将处理作为服务而不是软件作为事物出售..

由于用户表单的差异,无法转换和重写代码,没有 UDF,我在我的子例程和类似的东西中使用它

将您的代码放入 .netty 中,按下播放键并在一小时内运行它可能是不可能的。但我认为我们没有这样做。我以为我们正在.NET 中重新实现流程/软件。也许你选择的任何东西都没有一些 blah UDF(用户定义的函数?)这个,或者输入框 - 但最后,这些东西做了一些简单的工作,你可以在 .NET 中使用其他东西来做到这一点简单的工作。如果有人告诉我“说真的,有些事情你可以在 VBA 中完成,而在 C# 中完全不可能”我会笑一会儿,然后继续玩 javascript quake

14000 行代码并不是太多的代码,你不能只是坐下来在晚上开始抨击它,并且可能在大约一个月内用其他东西重新实现它——你已经知道你在做什么了想要代码来做,所以困难的部分是获取有关您如何使用(您选择的语言)执行此操作的信息 - 虽然这是 SO 的主题,所以免费搜索并询问如何将 VBA 的各种位翻译成 C# 等。 . 人们不会接受那些包含 500 行 VBA 的转储和“有人可以帮我翻译成 C#”的问题

【讨论】:

    猜你喜欢
    • 2018-09-14
    • 1970-01-01
    • 2017-12-21
    • 1970-01-01
    • 2021-07-16
    • 1970-01-01
    • 2012-07-02
    • 2015-05-22
    • 1970-01-01
    相关资源
    最近更新 更多