如何将具有输入参数的Microsoft Access查询导入Excel

时间:2019-03-07 09:49:32

标签: sql excel vba ms-access

我必须将Microsoft Access查询导入Excel。

导入问题是Microsoft Access查询需要两个输入参数,即当月和上个月。

根据输入,Access查询将从符合条件的表中选择某些值,然后仅对这些值进行某些计算。

如果我在Excel中使用导入功能,则会收到一条错误消息,指出需要两个输入但未提供。

任何帮助将不胜感激。

谢谢!

MS Access sql代码与此类似:

Select

table1.value,
table2.value,
table1.value * table2.value as product,

From(

select * 
(from table 1 where date = current month)

inner join

select *
(from table 2 where date = previous month))

(当前和上个月是弹出输入变量)

1 个答案:

答案 0 :(得分:0)

Access查询对象不能具有动态参数。 Excel将必须提供条件。以下是Excel从Access提取数据的示例。

Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
cn.Open ""Provider=Microsoft.ACE.OLEDB.12.0; Data Source='C:\Users\June\LabData.accdb'"
strStateNum = InputBox("Enter State Number", "State Number")
rs.Open "SELECT * FROM GeoDataAll WHERE StateNum='" & strStateNum & "';", cn, adOpenStatic, adLockReadOnly

代替InputBox,可以引用单元格来提供参数。

您在Excel中的查询,例如:

rs.Open "SELECT Q1.*, field1 * field2 AS Product FROM (" & _
           "(SELECT * FROM table1 WHERE [date] = " & cell for current month & ") AS T1 " & _
           "INNER JOIN " & _
           "(SELECT * FROM table2 WHERE [date] = " & cell for previous month & ") AS T2 " & _
           "ON T1.ID=T2.ID) " & _
        "AS Q1;", cn, adOpenStatic, adLockReadOnly

然后使用CopyFromRecordset方法将数据写入工作表中的某个区域。