TOP

VBA Excel을 사용한 SQL 쿼리

설명

외부 소스의 데이터를 워크시트로 가져오는 방법에는 여러 가지가 있습니다. Excel . 이번 글에서는 데이터베이스 파일에서 데이터를 쿼리하는 방법을 살펴보겠습니다. MS Access 그리고 파일에서 Excel 사용하여 SQL ~에 VBA . 응, 좀 섞어보자 SQL ~와 함께 VBA ! 그리고 그것은 당신이 생각하는 것보다 더 좋습니다!

SQL 약자 Structured Query Language (구조화된 쿼리 언어) 데이터베이스에서 정보를 검색하는 데 사용되는 언어입니다(예: MS Access, MS SQL Server, Oracle, Sybase, SAP, MySQL 다른 사람).

인터넷, 텍스트 파일 또는 기타 Excel에서 데이터를 얻을 수도 있습니다. CSV 파일.


1. Excel VBA에서 MS Access 파일로의 SQL 쿼리

따라서 데이터베이스 연결(변수 varConn 아래 매크로에서) 및 SQL 쿼리 (변하기 쉬운 varSQL ) 보고서의 데이터베이스에서 데이터 검색을 자동화합니다. 아래 예에는 SQL 쿼리 , MS Access의 작은 데이터베이스로부터 데이터를 수신합니다.

딸깍 하는 소리 데이터베이스를 로드하다 MS Access (test.mdb) .

MS Access 파일은 다음과 같습니다:

실행할 매크로를 작성해 보겠습니다. SQL 쿼리 .

메뉴 열기 서비스 - 매크로 - 편집기 Visual Basic , 새 모듈을 삽입 (메뉴 Insert - Module ) 거기에 매크로 텍스트를 복사합니다.

Sub SQLQuery_1()
'moonexcel.com.ua
Dim varConn As String
Dim varSQL  As String

    Range("A1").CurrentRegion.ClearContents

    varConn = "ODBC;Driver={Microsoft Access Driver (*.mdb, *.accdb)}"

    varSQL = "SELECT Month, Product, City FROM Sumproduct"

         With ActiveSheet.QueryTables.Add(Connection:=varConn, Destination:=Range("A1"))
             .CommandText = varSQL
             .Refresh BackgroundQuery:=False
         End With
End Sub 

저장을 클릭하고 Excel로 돌아갑니다. 메뉴에서 선택하세요 보기 - 매크로(Alt+F8) 매크로 이름 " SQLQuery_1 ". 대화 상자가 나타나면 누릅니다. 데이터 베이스... , Access 파일을 찾아 클릭하세요. ОК .

이제 매크로 쿼리가 열을 가져온 것을 볼 수 있습니다. Month , Product 그리고 City 테이블에서 Sumproduct 데이터베이스에서 test.mdb Excel 파일로.

2. VBA에서 닫힌 파일 Excel에 대한 SQL 쿼리

마찬가지로, 데이터베이스에서처럼 일반 Excel 파일에서 데이터를 가져올 수 있습니다. 이를 위해 매크로 코드를 약간 다시 작성하고 연결 드라이버를 Access에서 Excel로 변경해야 합니다.

테이블을 내보냅니다. Sumproduct Excel의 Access에서 파일을 저장합니다. 다음으로 수정된 코드를 새 모듈에 삽입하고 매크로를 실행합니다.

Sub SQLQuery_2()
'moonexcel.com.ua
Dim varConn As String
Dim varSQL  As String

    Range("A1").CurrentRegion.ClearContents

    varConn = "ODBC;Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)}"

    varSQL = "SELECT Month, Product, City FROM Sumproduct"

         With ActiveSheet.QueryTables.Add(Connection:=varConn, Destination:=Range("A1"))
             .CommandText = varSQL
             .Refresh BackgroundQuery:=False
         End With
End Sub 

Excel 파일을 선택할 수 있는 창이 나타납니다. Sumproduct.xlsx 또는 다른 확장자로). 우리는 그것을 찾아 선택합니다. 누르자 ОК , Access 파일에서와 동일한 데이터를 얻습니다.

주제에 관한 기사: