Добрый день, уважаемые форумчане! Помогите пожалуйста решить задачку: Дано: В книге есть условие выполняемое при открытии файла
Код
Private Sub Workbook_Open()
If (Now() < DateSerial(2022, 12, 1)) Then
fresh
copy
sms
ThisWorkbook.Save
Application.Quit
End If
End Sub
Проблема в том, что макрос сохранения запускается раньше, чем макрос обновления. При запуске выдается сообщение "Это приведет к отмене команды обновления данных. Продолжить?"
Как заставить выполнять макросы по очереди? fresh - если запускать отдельно, отрабатывает секунд 5
For Each oc In ThisWorkbook.Connections 'запоминаем значение обновления в фоне для запроса
IsBG_Refresh = oc.OLEDBConnection.BackgroundQuery
'выставляем принудительно ждать завершения запроса
oc.OLEDBConnection.BackgroundQuery = False
'обновляем запрос
oc.Refresh
'возвращаем обновление в фоне в первоначальное состояние
oc.OLEDBConnection.BackgroundQuery = IsBG_Refresh
Next
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 - это для примера (есть макрос отправки сообщения в телегу)
Замена макроса обновления помогла, огромное спасибо!