使用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