我需要将具有弹出式输入参数的Microsoft Access查询导入excel。我尝试了下面的代码,但它不起作用。我收到错误93,提示我未设置对象或对象变量。
我希望能够在excel中引用两个包含当前和上个月值的单元格,然后将这些值作为输入发送给访问查询,但是为了简化起见,现在我在VBA中输入了它们。
任何帮助将不胜感激!
谢谢!
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
答案 0 :(得分:1)
您可能必须将有效的日期值传递给参数:
add_book
答案 1 :(得分:1)
我通过一个非常简单的查询通过VBA测试了设置查询参数,并且可以进行以下调整。
查询对象必须在适当的字段下具有PARAMETERS子句和参数
将#
分隔符用于日期条件#12/31/2018#
Set rst = qdf
行未使用查询名称作为参数,变量qdf
提供了正确的名称以
Set rst = qdf.OpenRecordset()
,它将使用默认记录集类型。
要进行早期绑定,请至少在VBA编辑器中选择Microsoft Office 14.0 Access Database Engine Object Library
,以获取最新版本的Excel
答案 2 :(得分:0)
尝试在参数名称周围添加方括号,这样:
qdf.Parameters("[" & "Date_PreviousMonth" & "]") = "31.12.2018"