파워쿼리로 로드한 표를 새로고침하는 VBA 코드 예시입니다.
모든 파워쿼리 테이블 새로고침 VBA
Public Sub RefreshPowerQueryTable()
Dim cn As WorkbookConnection
Dim isRefreshed As Boolean
On Error GoTo ErrorHandler
For Each cn In ThisWorkbook.Connections
' 파워쿼리 테이블만 새로 고침합니다.
If InStr(1, cn.OLEDBConnection.Connection, "Microsoft.Mashup.OleDb.1", vbTextCompare) > 0 Then
cn.Refresh
isRefreshed = True
End If
Next cn
' 파워쿼리 테이블이 없을 경우 메시지를 표시합니다.
If Not isRefreshed Then
MsgBox "No Power Query table found in this workbook.", vbInformation, "Refresh Power Query Table"
End If
Exit Sub
ErrorHandler:
MsgBox "An error occurred while refreshing the Power Query tables." & vbCrLf & _
"Error details: " & Err.Description, vbExclamation, "Error"
Resume Next
End Sub
이 코드는 모든 시트를 대상으로 각 시트의 모든 파워쿼리 테이블을 순회하며 새로고침합니다.
For Each 구문을 사용하여 이 워크북에 있는 모든 연결(Connection)을 확인하고, 각 연결의 Connection 속성을 통해 해당 연결이 파워쿼리 테이블인지 여부를 확인합니다.
파워쿼리 테이블인 경우에만 Refresh 메서드를 호출하고, 모든 연결을 확인한 후 새로 고침이 되었는지 여부를 저장하고 있습니다.
따라서, 워크북에 파워쿼리 테이블이 여러 개 있어도 모든 테이블이 새로 고침됩니다.