source

Excel VBA를 사용하여 SQL 조회 실행

manycodes 2023. 5. 26. 21:11
반응형

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로 시작합니다.):

SQL에 대한 참조 필요

원격 호스트 및 사용자 이름/암호를 사용하여 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

반응형