I need to import a microsoft access query that has popup input parameters into excel. I tried the code below but it does not work. I receive error 93 that tells me that object or object variable is not set.
I would like to be able to reference two cells in excel that contain the values of the current and previous month and then send these values as inputs to the access query, but for now I entered them in VBA to keep it simple.
Any help would be greatly appreciated!
Thank you!
Sub Acess_Connection()
Dim dbs As DAO.Database
Dim rst As DAO.Recordset
Dim qdf As DAO.QueryDef
Dim i As Long
Dim wsh As Worksheet
Set dbs = DBEngine.OpenDatabase("filepath")
Set qdf = dbs.QueryDefs("parameter_query")
qdf.Parameters("Date_PreviousMonth") = "31.12.2018"
qdf.Parameters("Date_CurrentMonth") = "31.01.2019"
Set rst = qdf.OpenRecordset("parameter_query")
Set wsh = Worksheets("Sheet1")
For i = 0 To rst.Fields.Count - 1
wsh.Cells(1, i + 1).Value = rst.Fields(i).Name
Next
wsh.Range("A1").Resize(ColumnSize:=rst.Fields.Count).Font.Bold = True
wsh.Range("A2").CopyFromRecordset rst
rst.Close
Set rst = Nothing
dbs.Close
Set dbs = Nothing
End Sub
I tested setting query parameters via VBA with a very simple query and it works with following adjustments.
-
query object must have PARAMETERS clause and parameters under appropriate field(s)
-
use
#
delimiters for date criteria#12/31/2018#
-
Set rst = qdf
line does not use query name as argument, the variableqdf
provides the name so correct to
Set rst = qdf.OpenRecordset()
which will use the default recordset type. -
for early binding, select
Microsoft Office 14.0 Access Database Engine Object Library
in VBA editor, at least for more recent versions of Excel
Answer:
You may have to pass valid date values to the parameters:
qdf.Parameters("Date_PreviousMonth").Value = #12/31/2018#
qdf.Parameters("Date_CurrentMonth").Value = #01/31/2019#
Answer:
Try adding square brackets around your parameters name so:
qdf.Parameters("[" & "Date_PreviousMonth" & "]") = "31.12.2018"
Tags: excelexcel, vba