Excel VBAでデータベースのビューからデータを取得・表示する方法

この記事では、Excel VBAを使用してデータベースのビューからデータを抽出し、Excelに表示する方法を紹介します。具体的なコード例とその詳細解説、さらに3つの応用例を含めて解説していきます。

目次

Excel VBAの基本

Excel VBA(Visual Basic for Applications)は、Microsoft Excelに組み込まれたプログラミング言語です。これを用いると、単純作業の自動化だけでなく、高度なデータ分析やレポート作成も可能になります。

そもそも、どこにVBAコードを書いて、どう実行すれば良いのか分からない場合は、以下の記事をご参照ください。

基本的なデータ抽出と表示の方法

VBAを使用して、データベースのビューからデータを取得する際には、ADO (ActiveX Data Objects) を使用します。ADOはデータベースへの接続やデータの操作を可能にします。


Sub FetchDataFromDatabase()
    Dim conn As Object
    Dim rs As Object
    Dim connStr As String
    Dim query As String

    ' 接続オブジェクトを作成
    Set conn = CreateObject("ADODB.Connection")
    Set rs = CreateObject("ADODB.Recordset")

    ' 接続文字列 (ここではサンプルとしてSQL Serverを使用)
    connStr = "Provider=SQLOLEDB;Data Source=YOUR_SERVER_NAME;Initial Catalog=YOUR_DB_NAME;User ID=YOUR_USER_ID;Password=YOUR_PASSWORD"

    ' ビューからのデータ抽出クエリ
    query = "SELECT * FROM YourViewName"

    ' データベースに接続
    conn.Open connStr

    ' クエリの実行
    Set rs = conn.Execute(query)

    ' Excelにデータを表示
    ThisWorkbook.Worksheets("Sheet1").Range("A1").CopyFromRecordset rs

    ' 接続を閉じる
    rs.Close
    conn.Close
    Set rs = Nothing
    Set conn = Nothing
End Sub

コードの詳細解説

1. ADOの`Connection`と`Recordset`オブジェクトを初期化します。
2. SQL Serverへの接続文字列を設定します。適切な情報に置き換える必要があります。
3. ビューからデータを抽出するためのSQLクエリを設定します。
4. データベースに接続します。
5. SQLクエリを実行し、結果をRecordsetに格納します。
6. Excelの指定した範囲にRecordsetの内容をコピーします。
7. 最後に、接続とRecordsetを閉じてリソースを解放します。

応用例

1. 特定の条件でデータをフィルタリング

条件を絞ってデータを取得する場合、SQLクエリにWHERE句を追加します。


' 特定の条件でデータを抽出するクエリ
query = "SELECT * FROM YourViewName WHERE ColumnName = 'YourCondition'"

2. データをソートして取得

データを特定の順序で取得したい場合、SQLクエリにORDER BY句を追加します。


' ソートしてデータを抽出するクエリ
query = "SELECT * FROM YourViewName ORDER BY ColumnName DESC"

3. 特定の列のみを取得

全ての列ではなく、特定の列のみを取得する場合、SQLクエリを変更します。


' 特定の列のみを抽出するクエリ
query = "SELECT Column1, Column2 FROM YourViewName"

まとめ

Excel VBAとADOを使用して、データベースのビューからデータを抽出し、Excelに簡単に表示する方法を学びました。この技術を応用することで、日常の業務やレポート作成などで非常に役立つツールを開発することが可能です。

VBAも良いけどパワークエリも良い

VBAの解説をしてきましたが、VBAは正直煩雑でメンテナンス性が悪いです。最近はモダンExcelと呼ばれるパワークエリやパワーピボットへのシフトが進んできています。本サイトでもパワークエリの特集をしており、サンプルデータを含む全11回の学習コンテンツでパワークエリを習得することができます。

クリックするとパワークエリの全11講座が表示されます。

パワーピボットの記事はありません。興味がある場合は、書籍で学んでみてください

コメント

コメントする

目次