2015-08-04 2 views
0

У меня есть рабочий лист с 5 Access Запросы, которые я втянул в Excel. Мне нужно сделать VBA для цикла через 5 таблиц и обновлять их каждый раз, когда он запускается. Однако мой код, похоже, не выполняется, и он просто пропускает цикл. Может кто-то указать мне в правильном направлении. Благодаря!Обновление запросов с помощью vba

Private Sub CommandButton1_Click() 
    Application.ScreenUpdating = False 

    UnlockSheets 

    ' Update the raw data queries for needed information 
    Worksheets("Data").Activate 
     Range("A:AR").EntireColumn.Hidden = False 

     Dim QT As QueryTables 
     Dim ws As Worksheet 
     Set ws = Worksheets("Data") 

     For Each QT In ws.QueryTables 
      QT.Refresh 
     Next QT 
     Application.StatusBar = False 

     Range("A:AR").EntireColumn.Hidden = True 

    ' Refresh the pivot tables in the worksheet "pivot" 
    Worksheets("Pivot").Activate 
     Dim pvtTbl As PivotTable 

     For Each pvtTbl In ActiveSheet.PivotTables 
      pvtTbl.RefreshTable 
     Next 

    ' Update the rank sheet with the needed information 
    Worksheets("Rank").Activate 
     ActiveSheet.Calculate 
     ActiveSheet.EnableCalculations = True 
     DoEvents 

    LockSheets 

    Application.ScreenUpdating = True 

End Sub 
+0

Должно быть 'QT как QueryTable' единственное, у вас это как множественное число. Попробуйте это, посмотрите, исправляет ли это это. – CBRF23

+0

Я пытался это сделать, но ничего не работает. Он просто пропускает цикл. – Mukul215

+0

Когда я пытаюсь вручную обновить таблицу с помощью «ActiveWorkbook.Worksheets (« Данные »). Range (« Таблица_Report_Database.accdb_2 [[# Headers], [Date]] »). QueryTable.Refresh BackgroundQuery: = False' Я получаю 'Ошибка времени выполнения 1004: Определенная пользователем или объектная ошибка' – Mukul215

ответ

0

Так что я понял. Вместо того, чтобы проходить через все QueryTables, я сделал исправление вручную, добавив:

ActiveWorkbook.Worksheets("Data").Range("Table_Report_Database.accdb_2[[#Headers],[Date]]").ListObject.QueryTable.Refresh BackgroundQuery:=False 
Смежные вопросы