【问题标题】:Make VBA Forms application standalone使 VBA 表单应用程序独立
【发布时间】:2017-08-01 00:28:37
【问题描述】:

我是以前由承包商完成的应用程序的新维护者。该应用程序是在 Access 项目中使用 VBA 开发的。它完全由表单(其中一个使用 autoexec 宏打开)和点击处理程序之类的东西组成。除了使用 Access 中完成的 ODBC 表链接访问表之外,我看不到它对 Access 功能的任何用途。 这些是我想尽可能将此应用程序转换为独立应用程序的原因:

  • 根本没有版本控制,只是同一个项目的多个副本,文件名后面附加一个递增的数字
  • VBA IDE 超级烦人
  • 我认为代码可以迁移到更现代的语言,如 C# 或 VB.net,使其更易于维护

有什么方法可以将其转换为可以在 Visual Studio 中维护的单独的 Windows 应用程序(我猜使用 WinForms,因为这似乎与 VBA 中的表单相同)?

【问题讨论】:

  • 我认为需要重写。我不知道有任何工具可以自动转换。不过很多代码可能可以重用。
  • Is there any way to convert this to a separate Windows application 好吧,您需要在您选择的任何环境中开发新应用程序。没有办法“转换”代码。
  • 是的,垃圾和重写是要做的。
  • 好吧,这很烦人。我的印象是 Winforms 应用程序可以用 VB6 编写,也许有一些简单的方法可以在 VB6 之间进行转换。
  • 您可以很容易地将版本控制添加到访问数据库中。在 Access VBA 中开发表单创建和数据控制/验证比在 Winforms 中开发要快得多,而且不需要那么多编码。我同意 IDE 并不出色,但有几个免费工具使它更实用。熟悉会产生最大的影响。

标签: ms-access vba


【解决方案1】:

Access 20 年来一直支持标准的“Microsoft 源代码控制接口”。这篇文章对此进行了概述:

Version control for VBA file

还有这个:

How to implement version control in Access 2003?

Access + VBA 或 vb.net 几乎没有理由不能与源代码控制一起使用。但是,作为 Access 一部分的 SCC 加载项在 2013 年已贬值。因此,对于 2010 年之后的版本,您可以使用脚本导出对象。这很好用——我正在使用带有 Access 的 GitHub。因此,您需要一个脚本来导出对象,因为 SCC 插件不包含在 2010 之后的版本中,并且运行良好。 Access 可以将每个对象视为单独的“逻辑”对象。因此,将所有部分放在一个文件夹、一个 zip 文件或 Access continuer 中是没有实际意义的 - 不要在这里陷入许多人无法理解的物理与逻辑概念。

•VBA IDE 超级烦人

嗯,从来没有真正的问题。我一天中的大部分时间都在使用 VS2013 和 vb.net,但在大多数情况下,VBA IDE 对于大多数 Access 应用程序来说都很好。您能否举例说明您认为 VBA IDE 的哪些功能或某些方面不好?

•我认为代码可以迁移到更现代的语言,如 C# 或 VB.net,使其更易于维护

我不明白为什么用 c++、Pascal 或 VBA 编写的代码或多或少是可维护的?你必须举一个例子来说明你的意思?如果是 COBOL、Pascal 或 VBA,则可维护代码是可维护的。

我猜想使用 WinForms 似乎与 VBA 中的表单相同

不,Access 不使用 winforms。

Access 作为开发人员工具与使用 FoxPro 或 Delphi 并没有什么不同。这样的代码和系统可以重写,就像我在过去 30 年的桌面开发中所知道的任何其他软件开发系统一样。

作为一般规则,用 Delphi 或 Access + VBA 编写的东西不会通过某种魔法将转换为 WinForms 和 .net。这适用于我所知道的任何 IDE 和系统。

因此,过去一般计算机行业的软件从未以这种方式工作,因此在这方面,Access 与大多数其他软件几乎相同。

【讨论】:

  • > 不,Access 不使用 winforms。所以这就是我当时错的地方。我以为它是 Winforms,因此可以从 VBA 中提取(因为 Winforms 和 VB6 都在 VBA 之外可用)。我在网上找到了this commercial project,它似乎正在通过源到源的翻译进行我想象的转换。它看起来很有趣,但我想我会尝试将项目保持原样一段时间。
猜你喜欢
  • 2012-12-28
  • 1970-01-01
  • 2011-02-12
  • 1970-01-01
  • 2012-11-03
  • 2011-10-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多