TOP

VBA Excel を使用した SQL クエリ

説明

外部ソースからデータをワークシートに取得するにはさまざまな方法があります Excel 。この記事では、データベース ファイルからデータをクエリする方法を見ていきます。 MS Access そしてファイルから Excel を使用して SQL VBA 。はい、少し混ぜてみます SQLVBA !そして、それはあなたが思っているよりも良いです!

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 ファイルを探してクリックします。 ОК

これで、マクロ クエリが列を取得したことがわかります。 MonthProduct そして 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 ファイルからと同じデータを取得します。

トピックに関する記事: