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 ファイルからと同じデータを取得します。

トピックに関する記事:

LO Calc の YLC Utilities メニュー

LO Calc の YLC Utilities メニュー

Excel の YLC Utilities メニュー

Excel の YLC Utilities メニュー