[SQL] 엑셀 VBA를 사용하여 SQL 쿼리를 실행합니다
SQL엑셀 VBA를 사용하여 SQL 쿼리를 실행합니다
나는 SQL 및 VBA 상당히 새로운입니다. 내가 전화 통합 문서에 쿼리 결과를 가지고 다음 엑셀 통합 문서에서 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
우선,이 작품은 것? 둘째, 나는 하위에서 대체 무엇을해야합니까 (이 등 제공, 데이터 원본, 초기 카탈로그, 모양)과 어디 그들을 대체 할 수있는 정보를 찾을 수 있습니까?
나는이 질문이 너무 혼동되지 희망 나는 당신의 도움을 주셔서 감사합니다!
해결법
-
==============================
1.아래는 제가 현재 VBA로 MS SQL 서버 2008에서 풀 데이터에 사용하는 코드입니다. (내가 사용 당신은 당신이 적절한 ADODB 참조 [VBA 편집기 -> 도구 -> 참조]을 가지고 있고 Microsoft ActiveX 데이터 라이브러리가 선택되어 맨 아래 행에서 두 번째 인 검사 2.8 개체가 있는지 확인 있는지 확인해야합니다 윈도우 7에서 엑셀 2010) 당신은 약간 다른 액티브 X 버전이있을 수 있습니다,하지만 여전히 마이크로 소프트 액티브 X로 시작합니다 :
아래는 제가 현재 VBA로 MS SQL 서버 2008에서 풀 데이터에 사용하는 코드입니다. (내가 사용 당신은 당신이 적절한 ADODB 참조 [VBA 편집기 -> 도구 -> 참조]을 가지고 있고 Microsoft ActiveX 데이터 라이브러리가 선택되어 맨 아래 행에서 두 번째 인 검사 2.8 개체가 있는지 확인 있는지 확인해야합니다 윈도우 7에서 엑셀 2010) 당신은 약간 다른 액티브 X 버전이있을 수 있습니다,하지만 여전히 마이크로 소프트 액티브 X로 시작합니다 :
원격 호스트 및 사용자 이름 / 비밀번호로 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
from https://stackoverflow.com/questions/27385245/using-excel-vba-to-run-sql-query by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 일반 영어 정규화 (0) | 2020.04.30 |
---|---|
[SQL] java.sql.Date 대 SQL 날짜의 시간대 (0) | 2020.04.30 |
[SQL] 가입 대 존재하고 사용의 절 존재 (0) | 2020.04.30 |
[SQL] SQL 서버 (C #을 클라이언트)의 데이터를 많이 삽입 대량 가장 빠른 방법은 무엇입니까 (0) | 2020.04.30 |
[SQL] 무엇을 포함 않습니다 () LINQ에서합니까? (0) | 2020.04.29 |