使用VBA在Excel 2010中创build参数化SQL查询

我遇到以下链接:

http://www.informit.com/guides/content.aspx?g=sqlserver&seqNum=135

其中,它们列出了相对简单的代码来从Excel VBA中查询SQL数据库。

' Declare the QueryTable object Dim qt As QueryTable ' Set up the SQL Statement sqlstring = "select au_fname, au_lname from authors" ' Set up the connection string, reference an ODBC connection ' There are several ways to do this ' Leave the name and password blank for NT authentication connstring = _ "ODBC;DSN=pubs;UID=;PWD=;Database=pubs" ' Now implement the connection, run the query, and add ' the results to the spreadsheet starting at row A1 With ActiveSheet.QueryTables.Add(Connection:=connstring, Destination:=Range("A1"), Sql:=sqlstring) .Refresh End With 'Save and close the macro, and run it from the same menu you accessed in step 2. 

这工作正常。 不过,我希望能够将一个值作为一个variables而不是将其转储到Excel中。

有人可以帮我吗? 我试过寻找Excel VBA SQL教程,但似乎有一半的代码找不到(可能是因为我不明白)。

您可以使用ADO,例如:

 ''Reference: Microsft ActiveX Data Objects xx Library Dim cmd As New ADODB.Command Dim cn As New ADODB.Connection Dim param1 As New ADODB.Parameter Dim rs As ADODB.Recordset With cn .Provider = "SQLOLEDB" ''See also http://connectionsstrings.com .ConnectionString = "Data Source=Server;Initial Catalog=test;Trusted_Connection=Yes" .Open End With Set param1 = cmd.CreateParameter("@SiteID", adBigInt, adParamInput) param1.Value = 1 cmd.Parameters.Append param1 With cmd .ActiveConnection = cn ''Stored procedure .CommandText = "spSiteInformation_Retrieve" .CommandType = adCmdStoredProc Set rs = .Execute End With For Each f In rs.Fields Debug.Print f.Name; " "; f Next rs.Close Set rs = Nothing cn.Close Set cn = Nothing 

更多信息: http : //w3schools.com