Страницы: 1
RSS
отмена RefreshAll (обновление Excel из Access) перед сохранением файла VBA
 
Добрый день. Файлы Excel привязанs к базе Access. Макрос открывает файлы Excel из папки по очереди, открывшийся файл обновляет из базы Access, просчитывает и далее сохраняет и закрывает, открывает следующий файл в папке, делает то же самое.
После строки обновления таблицы, на строке сохранения файла вылезает сообщение, о том, что это действие может привести к отмене обновления. Если нажать ОК, то файл не закроется и сразу же открывается следующий с такой же проблемой. Если нажать ОТМЕНА, то файл сохранится, но не обновится. Строку с сохранением файла можно ставить в любое место после строки Activeworkbook.RefreshAll, окно из скриншота все равно будет появляться на строке сохранения. Подскажите, как избежать этого окна с выбором ОК и ОТМЕНА, чтобы обновление, сохранение, закрытие и открытие нового файла Excel работало?
Скриншот окна во вложении. Макрос ниже.
Код
Sub perebor()
Dim s As String, fldr As String
'fldr = "C:\путь к файлу"
s = Dir(fldr & "файл *.xlsm")
Do While s <> ""
    With Workbooks.Open(fldr & s)
    ActiveWorkbook.RefreshAll
        lr = Worksheets("Лист1").Cells(Rows.Count, 1).End(xlUp).Row
        lc = Worksheets("Лист1").Cells(1, Columns.Count).End(xlToLeft).Column

        Range(Cells(2, 9), Cells(lr, 9)).Clear
        R_data = Worksheets("Лист1").Range(Worksheets("Лист1").Cells(1, 1), Worksheets("Лист1").Cells(lr, lc))
        вычисления
        Worksheets("Лист1").Cells.Delete
        Worksheets("Лист1").Range(Worksheets("Лист1").Cells(1, 1), Worksheets("Лист1").Cells(lr, lc)) = R_data
        ActiveSheet.ListObjects.Add(xlSrcRange, Range(Cells(1, 1), Cells(lr, lc)), , xlYes).Name = "Таблица2"
        ActiveWorkbook.Save  'на этой строке выдает окно из скриншота.
        ActiveWorkbook.Close
    End With
    s = Dir
Loop
End Sub
Изменено: Hellmaster - 07.10.2019 12:37:03
 
В описании метода Workbook.RefreshAll подчеркнуто, что объекты, имеющие свойство BackgroundQuery=True, обновляются в фоновом режиме. Самое простое - изменить это свойство на False во внешних диапазонах и сводных таблицах.
Владимир
 
sokol92, спасибо за подсказку! действительно, проблема была в этом
 
Успехов!
Владимир
Страницы: 1
Наверх