【发布时间】:2019-03-10 03:57:36
【问题描述】:
我需要将具有弹出输入参数的 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
【问题讨论】:
-
“不起作用”是什么意思 - 错误消息,错误结果,什么也没有发生?查询对象中是否有 PARAMETERS 子句?需要在每个模块头中有
Option Explicit。变量存在拼写错误:Set qfd应为Set qdf。 -
我不知道参数子句是什么意思,所以我不确定。感谢您的反馈意见。它不起作用我的意思是我收到错误“数据类型转换失败”错误 3421,并且设置的第一行以黄色突出显示。
-
查询 docs.microsoft.com/en-us/office/client-developer/access/… 中的 PARAMETERS 子句(或声明)。请参阅 Gustav 关于转换错误的回答。我假设您正在用适当的信息替换
filepath和parameter_query。 -
不,我隐式声明了参数,即:select * from table1 where date = date_CurrentMonth。 (其中“日期”是“table1”中的一列)。是的,我纠正了拼写错误
-
我有一个使用 DAO 记录集从 Access 中提取数据的工作簿,但无法再让它工作。希望你有更好的运气。
标签: excel vba ms-access parameters