我正在编写一个VBA脚本,用于将数据从Access数据库导入到远程数据库服务器。 (它恰好是PostgreSQL,但我不认为这是非常相关的。)目前,我的脚本嵌入在Access数据库中。但是,我想像我的其他源代码那样对我的脚本进行编辑:作为纯文本,因此SVN可以给我很好的更改跟踪。
我还希望不必将源文件传递给客户端,以便他们使用脚本。换句话说,我想将已编译的导入工具提供给Access数据库。是否可以这样做?
或者我正在追逐错误的兔子?有没有办法在不将任何代码嵌入Access数据库的情况下使用Access库?我的搜索建议不是,但我对这种可能性持开放态度。这是我用VBA做过的第一件事,所以有一点我不知道,我敢肯定。
答案 0 :(得分:2)
我想我正在走错了兔子洞(而且我认为我使用的是一个不存在的习语)。事实证明,Office有一些.NET互操作DLL。我的机器似乎已经与Office一起安装了.NET互操作DLL,所以我所要做的就是添加对Microsoft.Office.Interop.Access
DLL的引用并创建一个应用程序对象:
var app = new Microsoft.Office.Interop.Access.Application();
我认为.NET应用程序将更适合我的需求。我不会做很多Access特定的事情。这将允许我照常在版本控制下使用我的源代码。唯一的缺点是任何开发机器(和构建服务器,如果我自动构建)都需要安装Access,但无论如何,这将发生在VBA脚本上。
答案 1 :(得分:0)
如果您不想在Access中执行此操作,则可能需要对此进行不同的标记。
您可以将数据库作为MDE文件提供给客户端,MDE文件是一个已编译且独立的Access数据库。如果这是您主要关心的问题,客户端将无法以此格式查看模块或其他VBA代码。