おそらくこのようなものです(すべての接続が結果をピボットテーブルではなくワークシートテーブルに配置すると仮定します):
Sub TimeQueries()
Dim oSh As Worksheet
Dim oCn As WorkbookConnection
Dim dTime As Double
For Each oCn In ThisWorkbook.Connections
dTime = Timer
oCn.Ranges(1).ListObject.QueryTable.Refresh False
Debug.Print Timer - dTime, oCn.Name, oCn.Ranges(1).Address(external:=True)
Next
End Sub
これを実行するには:
- Alt + F11 VBAエディターに移動します。
- メニューから:モジュールの挿入。
- ウィンドウにコードを貼り付けます。
- VBAエディターを閉じます。
- Alt + F8 マクロのリストが表示されます。新しいものを選び、[実行]をクリックします。
- Alt + F11 再びVBAエディタに。
- Ctr l + G 結果が表示された即時ペインを開きます。
コードをセルに書き込む場合は、次のバージョンを使用してください:
Sub TimeQueries()
Dim oSh As Worksheet
Dim oCn As WorkbookConnection
Dim dTime As Double
Dim lRow As Long
Set oSh = Worksheets("Sheet4") 'Change to your sheet name!
oSh.Cells(1,1).Value = "Name of Connection"
oSh.Cells(1,2).Value = "Location"
oSh.Cells(1,1).Value = "Refresh time (s)"
For Each oCn In ThisWorkbook.Connections
lRow = lRow + 1
dTime = Timer
oCn.Ranges(1).ListObject.QueryTable.Refresh False
oSh.Cells(lRow,3).Value = Timer - dTime
oSh.Cells(lRow,1).Value = oCn.Name
oSh.Cells(lRow,2).Value = oCn.Ranges(1).Address(external:=True)
Next
End Sub