小编典典

如何编写一个从SQL数据库返回值的Excel函数?

sql

我想编写以下功能,该功能应在Excel工作表中使用:

=GetRecField("Foo Record Key", "FooField1")

…这将通过ODBC在内部连接到SQL数据库,然后在其中执行

SELECT FooField1 FROM MyTable WHERE KEY_FIELD='Foo Record Key';

并将返回结果值作为函数GetRecField的结果。上面的SQL被授权仅返回一个记录(IOW KEY_FIELD具有唯一约束)。

当然,上面的函数可以在工作表中多次调用,所以请尽量避免盲目 QueryTables.Add

TIA。


阅读 196

收藏
2021-04-28

共1个答案

小编典典

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

  1. 打开VBA编辑器(ALT-F11)
  2. 打开工具->引用,并确保选择了“ Microsoft ActiveX数据对象2.8库”和“ Microsoft ActiveX数据对象Recordset 2.8库”
  3. 右键单击VBAProject,然后选择“插入”->“模块”
  4. 打开模块。现在,您可以创建一个自定义函数,例如:
    Public Function GetItem(field As String, id As Integer) As String
        Set oConnection = New ADODB.Connection
        Dim oRecordset As ADOR.Recordset
        oConnection.Open "provider=sqloledb;data source=yourserver;" & _
            "Trusted_Connection=yes;initial catalog=yourdatabase;"
        Set oRecordset = oConnection.Execute( & _
            "select " & field & " from table where id = " & id)
        If oRecordset.EOF Then
            GetItem = "n/a"
        Else
            GetItem = oRecordset(field)
        End If
    End Function
  1. 现在,您可以从单元格中调用该函数:

= GetItem(“ fieldname”; 2)

需要模块是因为不能从扩展架内部调用非模块函数。

2021-04-28