MS Access& Excel:将带有动态参数的查询转换为有用的参数

时间:2010-02-13 14:41:38

标签: excel ms-access parameters

我陷入了下面的问题,因为我没有使用Access或Excel,我有一些基本的编程语言。所以这是交易:

我刚刚在MS Access(2007)中创建了一个相当简单的数据库,它具有很好的查询来检索数据,具体取决于您传递的参数。在Excel(2007)中,我有一个很大的'模板',它基本上有查询参数。这些参数每列都有变化。每排!

也许是多余的,例如

column A contains paramA (10 different options)
column B contains paramB (8 different options)
column C contains paramC (2 different options)

我想要做的是用Access中的动态数据填充此模板,注意不断变化的参数。 e.g。

column D contains Query (ParamA, ParamB, ParamC)

我认为最好的方法是创建一个(内联?)函数,从查询中检索结果,同时根据相对单元格位置传递参数。然后将此函数复制为普通的内联excel函数(例如: SUM())。

我只是不知道如何从Excel宏函数内部调用/执行MS Access查询。

有人可以帮我吗?非常感谢你提前!

2 个答案:

答案 0 :(得分:0)

一些注释。

Dim cn As Object
Dim rs As Object

''See: http://www.connectionstrings.com/access

strFile = "C:\Docs\AccessDB.mdb"
strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strFile _
    & ";User Id=admin;Password=;"

Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")

cn.Open strCon

strSQL = "SELECT SomeField, OtherField FROM SomeTable " _
  & "WHERE SomeText='" & Range("A1") & "'"
rs.Open strSQL, cn

s = rs.GetString
MsgBox s

'' Or
Sheets("Sheet2").Cells(2, 1).CopyFromRecordset rs

答案 1 :(得分:0)

要添加到Remou的答案中也可以看到 Modules: Sample Excel Automation - cell by cell which is slowModules: Transferring Records to Excel with Automation

延迟绑定意味着您可以安全地删除引用,并且只有在应用程序执行相关代码行时才会出错。而不是在启动应用程序时出错并且根本不允许应用程序中的用户。或者当遇到mid,left或trim函数调用时。

当您不知道外部应用程序的版本将驻留在目标系统上时,这也非常有用。或者,如果您的组织正处于从一个版本移动到另一个版本的过程中。

有关更多信息,包括其他文字和一些详细链接,请参阅"Late Binding in Microsoft Access" page