2013-05-28 67 views
2

我正在编写一个VBA脚本来将数据从Access数据库导入远程数据库服务器。 (它恰好是PostgreSQL,但我认为这不是很相关。)目前,我的脚本嵌入在Access数据库中。但是,我想像我做其他源代码一样版本化我的脚本:作为纯文本,SVN可以为我提供良好的更改跟踪。如何在MS Access中使用外部VBA源代码?

我也不希望将源文件交付给客户端以供他们使用脚本。换句话说,我想提供已经编译到Access数据库的导入工具。是否有可能这样做?

还是我追错了兔子?有没有一种方法可以在不将任何代码嵌入Access数据库的情况下使用Access库?我的搜索建议不,但我愿意接受这种可能性。这是我用VBA做过的第一件事,所以有很多我不知道,我敢肯定。

回答

1

我想我是走错了兔子洞(我想我是用一个不存在的成语)。结果发现有一些用于Office的.NET interop DLL。我的机器似乎已经与Office安装了.NET互操作的DLL,所以我不得不做的是一个引用添加到Microsoft.Office.Interop.Access DLL并创建一个应用对象:

var app = new Microsoft.Office.Interop.Access.Application(); 

我觉得一个.net应用程序是怎么回事更适合我的需求。我不打算做很多Access特定的事情。这将允许我照常在版本控制下获得我的源代码。唯一的缺点是任何开发机器(和构建服务器,如果我自动化构建)都需要安装Access,但无论如何,这将发生在VBA脚本中。

0

如果您不想在Access中执行此操作,则可能需要对此进行不同的标记。

您可以将数据库作为MDE文件传递给客户端,MDE文件是经过编译的独立Access数据库。如果这是您主要关心的话,客户端将无法看到此格式的模块或其他VBA代码。

+0

不,我主要关心的是所有文件洗牌都必须完成。如果客户只需要处理一个文件,这对客户来说更简单。如果你可以建议一些标签,我会非常感激。 – jpmc26

+0

看看在Access中的Shell()命令。您必须确保每次都将VB脚本分发到同一位置,但这似乎是一件非常简单的事情。我已使用此功能从Access内启动应用程序,包括FTP文件传输。不确定你是否关心任何人能够找到你的出口功能,如果他们好奇,但它会做你想要的。 –

+0

“我正在写一个VBA脚本” 这就是我开始混淆的地方。有几种VB的风格。你实际使用哪个? “我的脚本嵌入在Access数据库中。” 更混乱! “我想提供已经编译到Access数据库的导入工具。” 这正是VBA(Visual Basic for Applications)的操作方式。 您能解释一下当前解决方案中的代码位置,它运行的位置和方式。 不要害怕写很多,以清楚你目前在做什么。 – tbur