Рабочая книга, Сохранить, Закрыть, Повторно открыть (с TimeValue), Повторить
Макрос запускается с помощью кнопки, назначенной "CloseMe". Раньше он работал для моих нужд, но больше не работает (так как я безуспешно пытался использовать этот код в другой книге). Теперь он сохраняет, закрывает, ждет 10 секунд, чтобы открыть, но затем закрывается сразу.
Sub CloseMe()
Application.OnTime Now + TimeValue("00:00:10"), "OpenMe"
ThisWorkbook.Close True
End Sub
Sub OpenMe()
Application.OnTime Now + TimeValue("00:10:00"), "OpenMe"
ThisWorkbook.Close True
End Sub
Мне нужен код, чтобы сохранить, закрыть, подождать 10 секунд, чтобы снова открыться, оставаться открытым в течение 10 минут (для сбора данных в реальном времени), а затем повторить этот процесс (пока я не прерву его вручную, чтобы остановить). Спасибо
3 ответа
Код выполняет то, что вы просите: а. CloseMe
расписания OpenMe
в течение 10 секунд и закроет книгу, затем б. Excel повторно открывает книгу и вызывает OpenMe
, который планирует себя через 10 минут, затем сразу же приступает к закрытию книги, и, наконец, Excel возобновляет работу через 10 минут в цикле.
Насколько я понимаю, ваш код должен выполнять что-то OpenMe
или же CloseMe
Таким образом, вы не хотите просто запланировать звонок и закрыть рабочую книгу. Кроме того, для цикла один подпрограмма должен планировать другой. В общих чертах, вы могли бы пойти по этим направлениям:
Sub CloseMe()
'Here, do whatever (if anything) must be done just before saving the workbook.
'...
'Schedule the OpenMe execution in 10 seconds.
'I don't understand why you need to close the workbook, but that's not the question.
Application.OnTime Now + TimeValue("00:00:10"), "OpenMe"
ThisWorkbook.Close True
End Sub
Sub OpenMe()
'Here, do whatever (if anything) must be done just as the workbook opens.
'...
'Schedule the CloseMe execution in 10 minutes.
Application.OnTime Now + TimeValue("00:10:00"), "CloseMe"
End Sub
Вы вызываете подпрограмму OpenMe для подпрограмм Open и Close.
Если вы хотите, чтобы это запускалось автоматически, где вызывается close sub, кроме командной кнопки?
@Excelosaurus мы очень близки. Спасибо, что объяснили это логически на разных подводных лодках. Вот полный код. Это работает, но мои временные метки удваиваются, когда он записывает, закрывает и снова открывает. Я записываю некоторые RTD, и чтобы обновить RTD, нужно открыть и закрыть книгу. Я пытался вставить в ActiveWorkbook.ForceFullCalculation = True
чтобы избежать дополнительных открывающих / закрывающих сабвуферов, но RTD не пересчитывал с использованием этого, поэтому единственный способ состоял в том, чтобы запустить сабвуфер с открытым / закрытым
Dim NextTime As Double
Sub RecordData()
Dim Interval As Double
Dim cel As Range, Capture As Range
Application.StatusBar = "Recording Started"
Set Capture = Worksheets("Dashboard").Range("C5:K5") 'Capture this row of data
With Worksheets("Journal") 'Record the data on this worksheet
Set cel = .Range("A2") 'First timestamp goes here
Set cel = .Cells(.Rows.Count, cel.Column).End(xlUp).Offset(1, 0)
cel.Value = Now
cel.Offset(0, 1).Resize(1, Capture.Cells.Count).Value = Capture.Value
End With
NextTime = Now + TimeValue("00:01:00")
Application.OnTime NextTime, "RecordData"
End Sub
Sub StopRecordingData()
Application.StatusBar = "Recording Stopped"
On Error Resume Next
Application.OnTime NextTime, "OpenMe", , False
On Error GoTo 0
End Sub
Sub OpenMe()
Call RecordData
Application.OnTime Now + TimeValue("00:10:00"), "CloseMe"
End Sub
Sub CloseMe()
Application.OnTime Now + TimeValue("00:00:10"), "OpenMe"
ThisWorkbook.Close True
End Sub