如何编写一个从SQL数据库返回值的Excel函数?
我想要写在Excel工作表中应该使用以下函数:
=GetRecField("Foo Record Key", "FooField1")
…将通过ODBC内部连接到一个SQL数据库,在那里执行一个
SELECT FooField1 FROM MyTable WHERE KEY_FIELD='Foo Record Key';
并作为函数GetRecField的结果返回结果值。 上面的SQL被授予只返回一个logging(IOW KEY_FIELD有一个唯一的约束)。
当然,上面的函数可以在工作表中多次调用,所以请尽量避免使用QueryTables.Add
TIA。
你可以写一个自定义函数来做到这一点
- 打开VBA编辑器(ALT-F11)
- 打开工具 – >参考,并确保“Microsoft ActiveX数据对象2.8库”和“Microsoft ActiveX数据对象logging集2.8库”被选中
- 右键单击VBAProject,然后select插入 – >模块
- 打开模块。 现在您可以创build一个自定义函数,如:
公共函数GetItem(字段为string,ID为整数)作为string 设置oConnection =新的ADODB.Connection Dim oRecordset As ADOR.Recordset oConnection.Open“provider = sqloledb; data source = yourserver;” &_ “Trusted_Connection = yes; initial catalog = yourdatabase;” 设置oRecordset = oConnection.Execute(&_ “select”&field&“from table where id =”&id) 如果是oRecordset.EOF那么 GetItem =“n / a” 其他 GetItem = oRecordset(field) 万一 结束function
-
您现在可以从单元中调用该函数:
=的GetItem( “字段名”; 2)
该模块是必需的,因为非模块function不能从扩展内部调用。
为什么不在另外的工作表(数据菜单,导入外部数据,新build数据库查询)上使用Excel的内置数据库查询function,然后使用VLOOKUP
从表中提取值?