VBA全局variables和Access数据库

我试图从像这样的全局variables从数据库中获取数据…

在这ThisWorkBook

 Private Sub Workbook_BeforeClose(Cancel As Boolean) DB.Close End Sub Private Sub Workbook_Open() DBfile = Application.ThisWorkbook.Path & "\mydatabase.accdb" Set DB = DBEngine.OpenDatabase(DBfile) End Sub 

MODULE1

 Option Explicit Global DB As DAO.Database Global RS As DAO.Recordset Global DBfile As Variant Public Function GetDataFromDB(TBL As String, COLMN As String, DTCLN As String, DT As String) As Variant Set RS = DB.OpenRecordset("SELECT " & COLMN & " FROM " & TBL & " WHERE " & DTCLN & " = #" & Format(DT, "m\/d\/yyyy") & "#", dbOpenDynaset) If RS.RecordCount > 0 Then RS.MoveFirst GetDataFromDB = RS(COLMN) End If End Function 

Set RS = DB.OpenRecordset我得到一个错误“91”。

一切工作正常,当我打开数据库内的function,但我有很多这样的function,所以如果我打开数据库与每个functionExcel将工作较慢

任何人都可以帮忙,请。

DBEngine是一种Access VBA方法。 它在Excel VBA中不存在。

因此,您不能在Workbook_Open()中使用它。

由于未设置DB对象variables,因此会出现错误91。