作成済みのExcelの「クエリと接続」を、VBAから実行(更新)する

以下の記事で作成したExcelの「クエリと接続」の「更新」を、
VBAから実施することができます!

 

「クエリと接続」の「更新」することで、Excel上のテーブルを
最新化することができます!

サンプルプログラム作成

ここでは以下の「接続とクエリ」をVBAから実行(更新)します。

 シート名        :サンプル
 エクセル上のテーブル名 :GetEmployeeTable ※「数式タブ」-「名前の管理」で確認
 接続とクエリ名     :GetEmployee

'変数の宣言を必須
Option Explicit

Sub execConnectQuery()

    '===============================
    '接続文字列
    '===============================
    'プロバイダ
    Const PROVIDER As String = "MSOLEDBSQL"
    'サーバー名(サーバーのPC名\インスタンス名)
    Const SERVER_NAME As String = "localhost\SQLEXPRESS"
    'DB名
    Const DB_NAME As String = "sampleDB"
    
    '===============================
    '接続とクエリの情報
    '===============================
    'シート名
    Const SHEET_NAME As String = "サンプル"
    'エクセル上のテーブル名
    Const TABLE_NAME As String = "GetEmployeeTable"
    '接続とクエリ名
    Const QUERY_NAME As String = "GetEmployee"
    
    Dim conStr As String
    
    '===============================
    '接続文字列の組み立て
    '===============================
    conStr = "OLEDB;" & _
             "Provider=" & PROVIDER & ";" & _
             "Data Source='" & SERVER_NAME & "';" & _
             "Initial Catalog='" & DB_NAME & "';" & _
             "Integrated Security=SSPI;" & _
             "DataTypeCompatibility=80;"

    '===============================
    '接続とクエリを実行(更新)
    '===============================
    With ThisWorkbook
        '接続文字列を指定
        .Connections(QUERY_NAME).OLEDBConnection.Connection = conStr
        '更新
        .Worksheets(SHEET_NAME).ListObjects(TABLE_NAME).QueryTable.Refresh BackgroundQuery:=False
    End With

End Sub

結果

実行前の状態

更新されることを確認するために、Excel上のテーブルの値を任意に変更する。

実行後の状態

SQL Server上のテーブルを同じデータとなった(最新の状態に更新された)。

タイトルとURLをコピーしました