Có lẽ như thế này (giả sử tất cả các kết nối đặt kết quả của chúng trong một bảng trang tính, không phải trong một bảng xoay):
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
Để chạy cái này:
- Alt + F11 để chuyển đến trình soạn thảo VBA.
- Từ trình đơn:Chèn Mô-đun.
- Dán mã vào cửa sổ.
- Đóng trình chỉnh sửa VBA.
- Alt + F8 hiển thị danh sách các macro. Chọn cái mới và nhấp vào chạy.
- Alt + F11 một lần nữa đến trình soạn thảo VBA.
- Ctr l + G mở khung ngay lập tức với kết quả.
Nếu bạn muốn mã ghi vào một ô, hãy sử dụng phiên bản này:
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