この記事では、Excel VBAを使用して特定のSQLクエリを定期的に実行し、その結果をExcelに出力する方法について詳しく解説します。この機能を利用することで、Excel上で定期的にデータベースの情報を取得・更新することが可能になります。
Excel VBAの基本
Excel VBA(Visual Basic for Applications)は、Microsoft Excelに組み込まれたプログラミング言語です。これを用いると、単純作業の自動化だけでなく、高度なデータ分析やレポート作成も可能になります。
そもそも、どこにVBAコードを書いて、どう実行すれば良いのか分からない場合は、以下の記事をご参照ください。

Excel VBAとSQLの連携の基本
VBAを使用することでExcelは様々な外部データベースと連携が可能です。特に、SQLクエリを用いて情報を取得する場面は業務で頻繁にあります。
必要な参照の追加
最初に、VBAでSQLのデータベースにアクセスするための参照を追加する必要があります。
1. VBAエディタを開きます。
2. 「ツール」メニューから「参照」を選択します。
3. 「Microsoft ActiveX Data Objects x.x Library」を選択して「OK」をクリックします。
SQLクエリの定期実行と結果の出力
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
Sub RunSQLandExportToExcel() Dim conn As Object Dim rs As Object Dim ConnectionString As String Dim SQL As String ' 接続文字列を設定 ConnectionString = "Your Connection String Here" ' SQLクエリを設定 SQL = "Your SQL Query Here" ' オブジェクトの初期化 Set conn = CreateObject("ADODB.Connection") Set rs = CreateObject("ADODB.Recordset") ' データベースに接続 conn.Open ConnectionString rs.Open SQL, conn ' Excelにデータを出力 ThisWorkbook.Worksheets("Sheet1").Range("A1").CopyFromRecordset rs ' オブジェクトを閉じて解放 rs.Close conn.Close Set rs = Nothing Set conn = Nothing End Sub |
コードの解説
このコードは、指定した接続文字列とSQLクエリを使用してデータベースに接続し、結果をExcelの”Sheet1″のA1セルから出力します。
– **ConnectionString**: ここにはデータベースへの接続情報が入ります。具体的な形式はデータベースの種類によって異なります。
– **SQL**: ここには実行したいSQLクエリを入力します。
応用例
1. 複数のシートに結果を出力
異なるSQLクエリの結果をそれぞれ異なるシートに出力する場面が考えられます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
Sub ExportToMultipleSheets() '... 前述のコードと同様の初期設定 ... ' クエリ1の結果をSheet1に出力 SQL = "Your SQL Query 1 Here" rs.Open SQL, conn ThisWorkbook.Worksheets("Sheet1").Range("A1").CopyFromRecordset rs rs.Close ' クエリ2の結果をSheet2に出力 SQL = "Your SQL Query 2 Here" rs.Open SQL, conn ThisWorkbook.Worksheets("Sheet2").Range("A1").CopyFromRecordset rs rs.Close '... オブジェクトの閉じる処理 ... End Sub |
2. クエリ結果をフィルタリングして出力
SQLの結果から特定の条件を満たすものだけをExcelに出力します。
1 2 3 4 5 6 7 8 9 10 11 12 |
Sub FilterAndExport() '... 前述のコードと同様の初期設定 ... SQL = "SELECT * FROM YourTable WHERE YourCondition" rs.Open SQL, conn ThisWorkbook.Worksheets("Sheet1").Range("A1").CopyFromRecordset rs rs.Close '... オブジェクトの閉じる処理 ... End Sub |
3. SQLクエリの結果を基にグラフを作成
Excelのグラフ作成機能を使用して、SQLクエリの結果をもとにグラフを作成します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
Sub CreateGraphFromSQL() '... 前述のコードと同様の初期設定 ... SQL = "Your SQL Query Here" rs.Open SQL, conn ThisWorkbook.Worksheets("Sheet1").Range("A1").CopyFromRecordset rs rs.Close ' グラフを作成 Dim Chart As ChartObject Set Chart = ThisWorkbook.Worksheets("Sheet1").ChartObjects.Add(Left:=100, Width:=375, Top:=75, Height:=225) Chart.Chart.SetSourceData Source:=ThisWorkbook.Worksheets("Sheet1").Range("A1:B10") Chart.Chart.HasTitle = True Chart.Chart.ChartTitle.Text = "Your Chart Title Here" '... オブジェクトの閉じる処理 ... End Sub |
まとめ
Excel VBAを使用して、定期的にSQLクエリを実行して結果をExcelに出力する方法を学びました。これにより、自動的なレポート作成やデータ分析が効率的に行えます。さらに、応用例を通じて、さまざまなシチュエーションでの応用方法も理解できたと思います
。
VBAも良いけどパワークエリも良い
VBAの解説をしてきましたが、VBAは正直煩雑でメンテナンス性が悪いです。最近はモダンExcelと呼ばれるパワークエリやパワーピボットへのシフトが進んできています。本サイトでもパワークエリの特集をしており、サンプルデータを含む全11回の学習コンテンツでパワークエリを習得することができます。
クリックするとパワークエリの全11講座が表示されます。
-
【初心者向け】パワークエリ入門:ETLツールを使ってエクセルデータを簡単に整形・統合しよう!(1/11)
-
【実践ガイド】パワークエリでデータ収集:Excel、CSV、PDF、Webデータを簡単に取り込む方法をマスターしよう!(2/11)
-
【総力特集】パワークエリで列操作をマスター:選択、変更、移動、削除、結合、分割の詳細解説&実践テクニック!(3/11)
-
【徹底解説】パワークエリで行操作をマスター!フィルター・保持・削除テクニックと練習用エクセルで実践学習(4/11)
-
パワークエリでデータクレンジング: 文字列結合、0埋め、テキスト関数をマスター(5/11)
-
パワークエリで四捨五入、切り捨て、切り上げをマスターする方法(6/11)
-
パワークエリで効率的なデータグループ化を実現する方法(7/11)
-
パワークエリで時間と日付の計算をマスター!便利な関数を使って効率アップ(8/11)
-
パワークエリで条件別集計をマスターする方法(9/11)
-
Excelパワークエリでクロス集計表とデータベース形式を瞬時に変換する方法(10/11)
-
Excelパワークエリ入門: 効率的なデータ整理をマスターしよう!(11/11)
パワーピボットの記事はありません。興味がある場合は、書籍で学んでみてください
コメント