
以下の記事で作成した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上のテーブルを同じデータとなった(最新の状態に更新された)。

