使用VBA从Excel创建与Access数据库的连接

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用VBA从Excel创建与Access数据库的连接相关的知识,希望对你有一定的参考价值。

我有一个Excel工作簿,其中有几个连接到Access数据库中的查询。我希望能够通过USB密钥与同事分享这一点,但是连接字符串有一个直接到数据库的路径,如下所示:

DSN=MS Access Database;DBQ=C:USERSMeDesktopDatabase.accdb;DefaultDir=C:;DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;

从我所知道的相对路径不能在这里使用。有没有办法在打开时获取Excel文件的当前路径并在VBA中创建连接? (数据库文件和Excel文件将始终位于相同的相对位置)

答案

用这个:

Path = ActiveWorkbook.Path & ""

如果您想要代码所在的工作簿路径,请使用:

Path = ThisWorkbook.Path & ""
另一答案

您可以像这样检索桌面的路径

sPath = Environ("USERPROFILE") & "Desktop"

这意味着您可以在连接字符串中使用以下内容

sPath & "Datbase.accdb"

更新为了使其更加健壮,如果数据库文件存在,最好添加一个函数。你可以使用类似于this的功能

Function fileExists(s_directory As String, s_fileName As String) As Boolean

    Dim obj_fso As Object

    Set obj_fso = CreateObject("Scripting.FileSystemObject")
    fileExists = obj_fso.fileExists(s_directory & "" & s_fileName)

End Function

以上是关于使用VBA从Excel创建与Access数据库的连接的主要内容,如果未能解决你的问题,请参考以下文章

使用 VBA 从 Access 表中将选定的列导入 Excel

使用 VBA 将 Access 查询链接到 Excel [重复]

从 Excel VBA-检查访问表是不是存在/如果不存在,则创建/复制

使用VBA将VBA模块从Access项目导出到Excel项目

VBA 将 Excel 文件从 Access 保存为 .xls

VBA Excel - 从 MS Access 将列名保存到电子表格