我陷入了下面的问题,因为我没有使用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查询。
有人可以帮我吗?非常感谢你提前!
答案 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 slow和 Modules: Transferring Records to Excel with Automation
延迟绑定意味着您可以安全地删除引用,并且只有在应用程序执行相关代码行时才会出错。而不是在启动应用程序时出错并且根本不允许应用程序中的用户。或者当遇到mid,left或trim函数调用时。
当您不知道外部应用程序的版本将驻留在目标系统上时,这也非常有用。或者,如果您的组织正处于从一个版本移动到另一个版本的过程中。
有关更多信息,包括其他文字和一些详细链接,请参阅"Late Binding in Microsoft Access" page