Question

Je suis tombé sur le lien suivant:

http://www.informit.com/guides/content. aspx? g = SQLServer & SEQNUM = 135

Dans ce document, on trouve une liste de code relativement simple pour interroger la base de données SQL à partir d'Excel VBA.

' 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.

Cela fonctionne très bien. Cependant, je veux être en mesure de tirer une valeur (s) arrière comme une variable au lieu de dumping à Excel.

Quelqu'un peut me aider avec ça? J'ai essayé la recherche d'Excel VBA Tutoriels SQL, mais il semble que la moitié du code je trouve ne fonctionne pas (peut-être parce que je ne comprends pas assez bien).

Était-ce utile?

La solution

Vous pouvez utiliser ADO, par exemple:

''Reference: Microsft ActiveX Data Objects x.x 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

Pour plus d'informations: http://w3schools.com

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top