我在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'”。 我觉得我已经走到了解决方案的一半。但我不知道我在这里错过了什么?
答案 0 :(得分:1)
在不知道VB6应用程序的结构和访问文件以及它们的作用的情况下,几乎不可能给出任何有用的答案。
您想要做的事情并不容易实现,正如评论中所述,VBA项目并非旨在以这种方式运作。
但是这里有一些建议。
如果您希望我的诚实建议开始迁移到更现代的解决方案,例如VB.NET,那么您在2020年就不会遇到更糟糕的问题。
您的问题有否银弹。
答案 1 :(得分:0)
最好在VB6中使用按钮设计一个新表单,如你所说,还有一些文本/列表/你要显示结果的任何内容,然后你复制/粘贴VBA将代码写入button_click(s)事件以执行它,并将一些输出添加到文本/列表/您决定放在VB6表单上的任何内容。
编辑:好的,所以考虑你的评论或许这个技巧可以帮助避免重写数千行代码:在VBA代码中添加一个while循环,在系统上存在标志时触发一些Sub或Function (例如一个特定的c:\ temp \ fileFlag.txt)所以只要它出现VBA代码就被调用...如果VB6控制该标志它会做什么工作? :)