Sono abbastanza nuovo per SQL e VBA. Ho scritto una query SQL che mi piacerebbe essere in grado di chiamare ed eseguire da un sub VBA in una cartella di lavoro Excel e quindi portare i risultati della query nella cartella di lavoro. Ho trovato alcuni sottotitoli online (stackoverflow e altri luoghi) che pretendono di farlo, ma ho difficoltà a capirli perché non contengono spiegazioni. Ad esempio, ecco un sub che ho trovato online:Utilizzo di Excel VBA per eseguire query SQL
Sub ConnectSqlServer()
Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim sConnString As String
' Create the connection string.
sConnString = "Provider=SQLOLEDB;Data Source=INSTANCE\SQLEXPRESS;" & _
"Initial Catalog=MyDatabaseName;" & _
"Integrated Security=SSPI;"
' Create the Connection and Recordset objects.
Set conn = New ADODB.Connection
Set rs = New ADODB.Recordset
' Open the connection and execute.
conn.Open sConnString
Set rs = conn.Execute("SELECT * FROM Table1;")
' Check we have data.
If Not rs.EOF Then
' Transfer result.
Sheets(1).Range("A1").CopyFromRecordset rs
' Close the recordset
rs.Close
Else
MsgBox "Error: No records returned.", vbCritical
End If
' Clean up
If CBool(conn.State And adStateOpen) Then conn.Close
Set conn = Nothing
Set rs = Nothing
End Sub
Prima di tutto, sarebbe questo lavoro? In secondo luogo, cosa devo sostituire nel sub (sembra provider, origine dati, catalogo iniziale, ecc.) E dove trovo le informazioni per sostituirli?
Spero che questa domanda non sia troppo confusa e apprezzo il vostro aiuto!
Il codice contiene commenti sopra ogni 'sezione'. Che cosa esattamente non capisci? Essenzialmente il codice; crea una connessione al database, esegue la query sulla connessione, carica i risultati in ResultSet, copia il ResultSet in una tabella a partire da "A1" ... –
Se il database ha un nome utente/password, il tuo sConnString ha bisogno avere "Password = ###; ID utente = ###". Inoltre, sConnString dovrebbe avere "Origine dati = IP_ADDRESS_OF_SERVER" e se stai utilizzando lo stesso computer per database e VBA, puoi utilizzare 127.0.0.1 per IP_ADDRESS_OF_SERVER. – Michael
Che tipo di database SQL stai usando? MS SQL? MySQL? SQLite? Questo determinerà se il codice VBA funzionerà o meno. – Michael