【发布时间】:2016-01-05 05:09:13
【问题描述】:
我在 Access .mdb 文件中有大量用 VBA 编写的代码,其中包含表单并连接到 Access 数据库。我需要将此代码迁移到 VB6 应用程序。全部重写是不切实际的,因为太多了。
有没有一种方法可以从带有按钮的 VB6 表单中调用该 VBA 文件,从而允许用户通过简单地单击相应的按钮来启动这些 VBA 模块中的每一个? VB6 中哪一行代码允许启动 VBA 文件?
更新
我终于成功地弄清楚了如何使用这条指令从我的 VB6 表单中启动一个 VBA mdb 文件:
Call Shell("C:\Program Files (x86)\Microsoft Office\OFFICE11\MSACCESS.EXE C:\presto.mdb /runtime /cmd", 1)
所以 VBA 项目现在从 VB6 表单启动,但它在启动时崩溃,显示此错误“运行时错误‘3024’找不到文件‘C:\db.mdb’”。 我觉得我已经完成了解决方案的一半。但我不知道我在这里错过了什么?
【问题讨论】:
-
VBA 文件本身没有意义。它们必须在托管应用程序中。如果发生这种情况,您有一个 VBA 文件不引用托管应用程序的任何功能并且只是一个抽象库,那么您可以将其粘贴到 VB6 表单中。否则无论如何它都会失败,因为它需要运行主机应用程序。
-
您的 VBA 代码用于什么应用程序?
-
VBA 和 VB6 使用相同的运行时,所以正如@GSerg 指出的那样,至少从核心语言的角度来看,您不需要“重写”。
-
@TimWilliams - 完全正确;这取决于您使用的主机应用程序(Excel、Word 等)的哪些功能。
-
MDB 不是 VBA 文件。 MDB 是一个 MS Access 数据库,其中包含数据和(可选)一个 VBA 项目。如果您设法将所有代码重写为 VB6(您必须认真对待它,因为当您在数据库内部和外部时数据访问机制不同),那么您仍然必须携带原始 mdb文件,因为它是带有数据的数据库。此时您可能只是不接触 mdb 文件并按原样使用它。如果您想在未安装 Office 的计算机上使用它,可以从 Microsoft 获得免费的 MS Access Viewer。