无法从Excel2016用户表单连接到存储在相​​同位置的Access2016文件

时间:2019-04-24 08:13:25

标签: excel vba

我将前端用作Excel2016,后端是Access2016。 这是一个共享文件,供多个用户用于数据输入,因此在执行每个功能后,我释放连接对象。

我在Workbook_Open()事件中获取表数据,它的工作原理绝对不错。 我有一个用于输入数据的用户表单。我使用了相同的代码,令人惊讶的是,这次ActiveWorkbook.Path对我来说很好用,但对其他用户而言却没有返回相同的路径。

我也尝试过在用户窗体的一般声明区域(Public strPath As String)中定义公共变量,并在Workbook_Open()中设置变量的值(Set strPath = ActiveWorkbook.Path),但这不会也可以。

我附上我当前的代码以供参考。通过在用户窗体中单击按钮来调用open_connection()。

Workbook_Open()

strPath = ActiveWorkbook.Path
strDBName = "Test Excel Access.accdb"
strDB = strPath & "\" & strDBName

ConnDB.Open ConnectionString:="Provider = Microsoft.ACE.OLEDB.12.0; data source=" & strDB

strTable = "Table01"

adoRecSet.Open Source:=strTable, ActiveConnection:=ConnDB, CursorType:=adOpenDynamic, LockType:=adLockOptimistic

' perform init operations

adoRecSet.Close
Set adoRecSet = Nothing
ConnDB.Close
Set ConnDB = Nothing

Application.DisplayAlerts = False
ThisWorkbook.Save
Application.DisplayAlerts = True

open_connection()

strPath = ActiveWorkbook.Path
strDBName = "Test Excel Access.accdb"
strDB = strPath & "\" & strDBName

ConnDB.Open ConnectionString:="Provider = Microsoft.ACE.OLEDB.12.0; data source=" & strDB

strTable = "Table01"

adoRecSet.Open Source:=strTable, ActiveConnection:=ConnDB, CursorType:=adOpenDynamic, LockType:=adLockOptimistic

有没有一种方法可以在用户窗体中使用Workbook_Open()中的strPath值?或者当我在UserForm中使用ActiveWorkbook.Path函数时如何获得相同的路径。

1 个答案:

答案 0 :(得分:0)

我已通过将工作簿的路径存储到Workbook_Open()中的单元格并稍后在用户窗体中使用该单元格值作为路径来解决此问题。