Я довольно новичок в SQL и VBA. Я написал SQL-запрос, который хотел бы иметь возможность вызывать и запускать с помощью VBA в книге Excel, а затем выводить результаты запроса в книгу. Я нашел несколько онлайн-приложений (stackoverflow и другие места), которые заявляют об этом, но у меня возникли проблемы с их пониманием, поскольку они не содержат никаких объяснений. Например, здесь находится подразделение, которое я нашел в Интернете:Использование Excel VBA для выполнения 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
Прежде всего, будет ли это работать? Во-вторых, что мне нужно заменить на суб (это выглядит как поставщик, источник данных, начальный каталог и т. Д.) И где я могу найти информацию для их замены?
Надеюсь, этот вопрос не слишком запутан и я ценю вашу помощь!
В коде есть комментарии над каждым разделом. Что именно вы не понимаете? По существу код; создает соединение с базой данных, выполняет запрос к соединению, загружает результаты в ResultSet, копирует ResultSet в таблицу, начиная с диапазона «A1» ... –
Если ваша база данных имеет имя пользователя/пароль, то ваши потребности sConnString для «Password = ###; User ID = ###». Кроме того, sConnString должен иметь «Источник данных = IP_ADDRESS_OF_SERVER», и если вы используете тот же компьютер для базы данных и VBA, вы можете использовать 127.0.0.1 для IP_ADDRESS_OF_SERVER. – Michael
Какой тип базы данных SQL вы используете? MS SQL? MySQL? SQLite? Это определит, будет ли работать код VBA. – Michael