自定义exel函数与macrosvba和sql server数据库

我有一个Sql数据库与表= Data_table

<html> <head> <style> table, th, td { border: 1px solid black; border-collapse: collapse; } </style> </head> <body> <table style="width:100%"> <tr> <th>ID</th> <th>NAME</th> <th>AGE</th> </tr> <tr> <td>123AB</td> <td>Smith</td> <td>50</td> </tr> <tr> <td>456CD</td> <td>Jackson</td> <td>94</td> </tr> <tr> <td>789EF</td> <td>Doe</td> <td>80</td> </tr> </table> </body> </html> 

我试图做一个Excelmacros将给我在Excel中的以下function:允许我使用SQL查询与我的自定义函数(= SQLSelect(A1))显示B1上的名称。

 <html> <head> <style> table, th, td { border: 1px solid black; border-collapse: collapse; } </style> </head> <body> <table style="width:100%"> <tr> <th> </th> <th>A</th> <th>B</th> </tr> <tr> <td>1</td> <td>123AB</td> <td>=SQLSelect(A1)</td> </tr> <tr> <td>2</td> <td> </td> <td> </td> </tr> <tr> <td>3</td> <td> </td> <td> </td> </tr> </table> </body> </html> 

这是我迄今为止所做的:

 Function SqlSelect(n As String) As String Dim cnn As New ADODB.Connection Dim rst As New ADODB.Recordset Dim ConnectionString As String Dim StrQuery As String ConnectionString = "Provider=SQLOLEDB.1;Password=pass;Persist Security Info=True;User ID=sa;Data Source=IT\SQLEXPRESS;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Use Encryption for Data=False;Tag with column collation when possible=False;Initial Catalog=Database" cnn.Open ConnectionString cnn.CommandTimeout = 900 StrQuery = "SELECT NAME FROM data_table where ID='" + n + "'" rst.Open StrQuery, cnn n = rst.GetString End Function 

我希望这个问题不是太混乱,我感谢你的帮助!

 Function SqlSelect(n As String) As String Dim cnn As New ADODB.Connection Dim rst As New ADODB.Recordset Dim ConnectionString As String Dim StrQuery As String ConnectionString = "Provider=SQLOLEDB.1;Password=pass;Persist Security Info=True;" & _ "User ID=sa;Data Source=IT\SQLEXPRESS;Use Procedure for Prepare=1;" & _ "Auto Translate=True;Packet Size=4096;Use Encryption for Data=False;" & _ "Tag with column collation when possible=False;Initial Catalog=Database" cnn.Open ConnectionString cnn.CommandTimeout = 900 StrQuery = "SELECT NAME FROM data_table where ID='" + n + "'" rst.Open StrQuery, cnn If not rst.EOF Then SqlSelect = rst.GetString Else SqlSelect = "???" End If End Function