Страницы: 1
RSS
Заставить макросы выполнятся по очереди
 
Добрый день, уважаемые форумчане!
Помогите пожалуйста решить задачку:
Дано: В книге есть условие выполняемое при открытии файла
Код
Private Sub Workbook_Open()
 If (Now() < DateSerial(2022, 12, 1)) Then
  fresh
  copy
   sms
  ThisWorkbook.Save
  Application.Quit 
 End If
End Sub


Проблема в том, что макрос сохранения запускается раньше, чем макрос обновления. При запуске выдается сообщение "Это приведет к отмене команды обновления данных. Продолжить?"

Как заставить выполнять макросы по очереди?
fresh - если запускать отдельно, отрабатывает секунд 5
Изменено: Legis - 26.07.2022 13:47:37
 
Вам сюда: Добавить команду по фоновому обновлению в макрос - в какую конкретно часть?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Legis,
а можно увидеть макросы?
Код
 fresh
 copy
  sms

Предполагаю что там, что-то вроде:
Код
thisworkbook.RefreshAll

и надо поменять на:
Код
For Each oc In ThisWorkbook.Connections        'запоминаем значение обновления в фоне для запроса
        IsBG_Refresh = oc.OLEDBConnection.BackgroundQuery
        'выставляем принудительно ждать завершения запроса
        oc.OLEDBConnection.BackgroundQuery = False
        'обновляем запрос
        oc.Refresh
        'возвращаем обновление в фоне в первоначальное состояние
       oc.OLEDBConnection.BackgroundQuery = IsBG_Refresh
    Next
 
из макроса обновлений запретить обновление в фоновом режиме
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
fresh - вы правы там просто
Код
Sub fresh()
    ActiveWorkbook.RefreshAll
End Sub

Sub copy()
 Dim s As Worksheet
 Dim wb As Workbook
 Set wb = ActiveWorkbook
 n = Sheets("тех").Range("F1").Value
 Application.DisplayAlerts = False
 For i = 1 To 1
  nn = Worksheets(i).Name
  Worksheets(i).copy
   With ActiveSheet.UsedRange
        .Value = .Value
    End With
  ActiveWorkbook.SaveAs wb.Path & "\" & "Prodaji_" & nn & "_" & n & ".xlsx"
  ActiveWindow.Close
 Next i
 Application.DisplayAlerts = True
End Sub
[CODE][/CODE]sms - это для примера (есть макрос отправки сообщения в телегу)


Замена макроса обновления помогла, огромное спасибо!
Изменено: Legis - 26.07.2022 13:47:10
 
Legis,  код следует оформлять соответствующим тегом. Для этого используйте кнопку <...> и исправьте своё сообщение.
Страницы: 1
Наверх