VBA Возможный цикл в цикле FOR - PullRequest
0 голосов
/ 15 октября 2018

У меня есть файл Excel с некоторыми сводными таблицами, в котором есть макрос, который открывает файл Excel SOURCE, обновляет различные сводные таблицы и, наконец, должен закрыть исходный файл.Если я прокомментирую цикл FOR, он откроет и закроет файл SOURCE правильно, поэтому я подозреваю, что в цикле есть проблема.

Спасибо за любые предложения

Option Explicit
Private Sub Workbook_Open()
    Call aggiorna
End Sub

Sub aggiorna()
    On Error GoTo ErrHandler
    Application.ScreenUpdating = False

    Dim wrb As Workbook
    Dim pt As PivotTable

    ' Apre in sola lettura
    Set wrb = Workbooks.Open("C:\Users\Saila\Desktop\Ore Operatori_2018.xlsx", True, True)

    For Each pt In ActiveSheet.PivotTables
                pt.RefreshTable
        Next pt

    ' Chiude Sorgente
    wrb.Close
    Set wrb = Nothing

ErrHandler:
    Application.EnableEvents = True
    Application.ScreenUpdating = True
End Sub

1 Ответ

0 голосов
/ 15 октября 2018

наиболее вероятно, что код вызывает некоторую ошибку во время циклического изменения сводной таблицы, а затем он переходит на метку ErrHandler:, пропуская как wrb.Close, так и Set wrb = Nothing

, перемещая эти последние операторы после ErrHandler: метка

Sub aggiorna()
    On Error GoTo ErrHandler
    Application.ScreenUpdating = False

    Dim wrb As Workbook
    Dim pt As PivotTable

    ' Apre in sola lettura
    Set wrb = Workbooks.Open("C:\Users\Saila\Desktop\Ore Operatori_2018.xlsx", True, True)

    For Each pt In ActiveSheet.PivotTables
        pt.RefreshTable
    Next pt


ErrHandler:
    ' Chiude Sorgente
    wrb.Close
    Set wrb = Nothing

    Application.EnableEvents = True
    Application.ScreenUpdating = True
End Sub

Кстати, вы можете прокомментировать On Error GoTo ErrHandler и посмотреть, где и почему происходит сбой кода, а затем улучшить свой код для надлежащего управления ошибкой

...