如何将参数发送到Microsoft Access查询,以便我可以将访问参数查询导入到Excel?

时间:2019-03-08 11:52:10

标签: excel vba ms-access parameters

我需要将具有弹出式输入参数的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

3 个答案:

答案 0 :(得分:1)

您可能必须将有效的日期值传递给参数:

add_book

答案 1 :(得分:1)

我通过一个非常简单的查询通过VBA测试了设置查询参数,并且可以进行以下调整。

  1. 查询对象必须在适当的字段下具有PARAMETERS子句和参数

  2. #分隔符用于日期条件#12/31/2018#

  3. Set rst = qdf行未使用查询名称作为参数,变量qdf提供了正确的名称以 Set rst = qdf.OpenRecordset(),它将使用默认记录集类型。

  4. 要进行早期绑定,请至少在VBA编辑器中选择Microsoft Office 14.0 Access Database Engine Object Library,以获取最新版本的Excel

答案 2 :(得分:0)

尝试在参数名称周围添加方括号,这样:

qdf.Parameters("[" & "Date_PreviousMonth" & "]") = "31.12.2018"