Pregunta

Encontré el siguiente enlace:

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

En él, enumeran un código relativamente simple para consultar la base de datos SQL de 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.

Esto funciona bien. Sin embargo, quiero poder retirar un valor (s) como una variable en lugar de descargarlo para sobresalir.

¿Alguien puede ayudarme con eso? He intentado buscar tutoriales SQL de Excel VBA, pero parece que la mitad del código que encuentro no funciona (tal vez porque no lo entiendo lo suficientemente bien).

¿Fue útil?

Solución

Puede usar ADO, por ejemplo:

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

Más información: http://w3schools.com

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top