Jestem całkiem nowy w SQL i VBA. Napisałem zapytanie SQL, które chciałbym wywołać i uruchomić z subskrypcji VBA w skoroszycie programu Excel, a następnie przenieść wyniki zapytania do skoroszytu. Znalazłem niektóre subs online (stackoverflow i inne miejsca), które twierdzą, że to robią, ale mam problem ze zrozumieniem ich, ponieważ nie zawierają żadnego wyjaśnienia. Na przykład tutaj znajduje się sub, który znalazłem online:Używanie programu Excel VBA do uruchamiania kwerend 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
Po pierwsze, czy to działa? Po drugie, co muszę zastąpić w podsieci (wygląda na dostawcę, źródło danych, początkowy katalog itp.) I gdzie mogę znaleźć informacje, aby je zastąpić?
Mam nadzieję, że to pytanie nie będzie zbyt skomplikowane i doceniam Twoją pomoc!
Kod zawiera komentarze nad każdą "sekcją". Czego dokładnie nie rozumiesz? Zasadniczo kod; tworzy połączenie z bazą danych, wykonuje zapytanie względem połączenia, ładuje wyniki do ResultSet, kopiuje ResultSet do tabeli zaczynającej się od zakresu "A1" ... –
Jeśli twoja baza danych ma nazwę użytkownika/hasło, to twoje potrzeby sConnString mieć "Hasło = ###; ID użytkownika = ###". Podobnie, sConnString powinien mieć "Data Source = IP_ADDRESS_OF_SERVER" i jeśli używasz tego samego komputera dla bazy danych i VBA, możesz użyć 127.0.0.1 dla IP_ADDRESS_OF_SERVER. – Michael
Jakiego typu bazy danych SQL używasz? MS SQL? MySQL? SQLite? Pozwoli to ustalić, czy kod VBA będzie działał. – Michael