如何编写一个从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。

你可以写一个自定义函数来做到这一点

  1. 打开VBA编辑器(ALT-F11)
  2. 打开工具 – >参考,并确保“Microsoft ActiveX数据对象2.8库”和“Microsoft ActiveX数据对象logging集2.8库”被选中
  3. 右键单击VBAProject,然后select插入 – >模块
  4. 打开模块。 现在您可以创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
  1. 您现在可以从单元中调用该函数:

    =的GetItem( “字段名”; 2)

该模块是必需的,因为非模块function不能从扩展内部调用。

为什么不在另外的工作表(数据菜单,导入外部数据,新build数据库查询)上使用Excel的内置数据库查询function,然后使用VLOOKUP从表中提取值?