반응형
Excel VBA를 사용하여 SQL 조회 실행
저는 SQL과 VBA에 익숙하지 않습니다.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
우선, 이것이 효과가 있을까요?둘째, 하위 항목(공급자, 데이터 원본, 초기 카탈로그 등으로 표시됨)에서 무엇을 대체해야 하며 대체할 정보는 어디에서 찾을 수 있습니까?
이 질문이 너무 혼란스럽지 않기를 바라며 당신의 도움에 감사드립니다!
아래는 현재 MS SQL Server 2008의 데이터를 VBA로 가져오는 데 사용하는 코드입니다.올바른 ADODB 참조 [VBA Editor->Tools->References]가 있는지 확인하고 확인한 아래 행에서 두 번째인 Microsoft ActiveX Data Objects 2.8 라이브러리가 확인해야 합니다(Windows 7에서 Excel 2010을 사용하고 있으며 ActiveX 버전이 약간 다를 수 있음).Microsoft ActiveX로 시작합니다.):
원격 호스트 및 사용자 이름/암호를 사용하여 MS SQL에 연결하기 위한 하위 모듈
Sub Download_Standard_BOM()
'Initializes variables
Dim cnn As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim ConnectionString As String
Dim StrQuery As String
'Setup the connection string for accessing MS SQL database
'Make sure to change:
'1: PASSWORD
'2: USERNAME
'3: REMOTE_IP_ADDRESS
'4: DATABASE
ConnectionString = "Provider=SQLOLEDB.1;Password=PASSWORD;Persist Security Info=True;User ID=USERNAME;Data Source=REMOTE_IP_ADDRESS;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Use Encryption for Data=False;Tag with column collation when possible=False;Initial Catalog=DATABASE"
'Opens connection to the database
cnn.Open ConnectionString
'Timeout error in seconds for executing the entire query; this will run for 15 minutes before VBA timesout, but your database might timeout before this value
cnn.CommandTimeout = 900
'This is your actual MS SQL query that you need to run; you should check this query first using a more robust SQL editor (such as HeidiSQL) to ensure your query is valid
StrQuery = "SELECT TOP 10 * FROM tbl_table"
'Performs the actual query
rst.Open StrQuery, cnn
'Dumps all the results from the StrQuery into cell A2 of the first sheet in the active workbook
Sheets(1).Range("A2").CopyFromRecordset rst
End Sub
언급URL : https://stackoverflow.com/questions/27385245/using-excel-vba-to-run-sql-query
반응형
'source' 카테고리의 다른 글
Python Enum을 확장하는 방법은 무엇입니까? (0) | 2023.05.26 |
---|---|
Postgre에서 두 날짜 사이의 시계열 생성SQL (0) | 2023.05.26 |
항목을 수평으로 배치하는 WPF ListBox (0) | 2023.05.26 |
한 배열에 다른 배열의 모든 요소가 포함되어 있는지 확인하는 방법 (0) | 2023.05.26 |
반 플로트 숫자를 적절하게 반올림하는 방법은 무엇입니까? (0) | 2023.05.26 |