使用 VBA 从 Excel 创建到 Access 数据库的连接
Creating connections to Access database from Excel using VBA
我有一个 Excel 工作簿,其中有多个连接到 Access 数据库中的查询。我希望能够通过 USB 密钥与同事共享此内容,但连接字符串具有指向数据库的直接路径,如下所示:
DSN=MS Access Database;DBQ=C:\USERS\Me\Desktop\Database.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"
Update 为了使其更健壮,如果数据库文件存在,最好添加一个函数。您可以使用类似于 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
我有一个 Excel 工作簿,其中有多个连接到 Access 数据库中的查询。我希望能够通过 USB 密钥与同事共享此内容,但连接字符串具有指向数据库的直接路径,如下所示:
DSN=MS Access Database;DBQ=C:\USERS\Me\Desktop\Database.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"
Update 为了使其更健壮,如果数据库文件存在,最好添加一个函数。您可以使用类似于 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