Maybe something like this:
Option Explicit
Public RunWhen As Double
Public Const cRunWhat = "YourSubRoutineNameHere"
Sub Aut

pen()
Call StartTimer
End Sub
Sub Auto_Close()
Call StopTimer
End Sub
Sub StartTimer()
If Time < TimeSerial(8, 0, 0) Then
RunWhen = Date + TimeSerial(8, 0, 0)
Else
RunWhen = Date + 1 + TimeSerial(8, 0, 0)
End If
Application.OnTime EarliestTime:=RunWhen, Procedure:=cRunWhat, _
Schedule:=True
End Sub
Sub StopTimer()
On Error Resume Next
Application.OnTime EarliestTime:=RunWhen, Procedure:=cRunWhat, _
Schedule:=False
End Sub
Sub YourSubRoutineNameHere()
Dim wks As Worksheet
Dim IsVisible As Boolean
IsVisible = Live.Visible
'make sure Live is visible if it's not
Live.Visible = xlSheetVisible
Live.Copy _
before:=ThisWorkbook.Sheets(1)
Set wks = ActiveSheet 'just copied version of live
With wks
.Cells.Copy
.Cells.PasteSpecial Paste:=xlPasteValues
On Error Resume Next
.Name = Format(Date, "ddmmm")
If Err.Number <> 0 Then
Err.Clear
MsgBox "Rename failed!"
End If
On Error GoTo 0
End With
Live.Visible = IsVisible
ThisWorkbook.Save
Call StartTimer
End Sub
=========
Depending on what you want to do when the workbook opens, this procedure:
Sub Aut

pen()
Call StartTimer
End Sub
could be:
Sub Aut

pen()
Call YourSubRoutineNameHere
End Sub
Do you want to set the timer and then decide to run it or always run it.
Or you could do what I'd do...ask.
Sub Aut

pen()
Dim resp As Long
resp = MsgBox(Prompt:="Yes to run" _
& vbLf & "No to Start Timer" _
& vbLf & "Cancel to do nothing", _
Buttons:=vbYesNoCancel)
Select Case resp
Case Is = vbYes: Call YourSubRoutineNameHere
Case Is = vbNo: Call StartTimer
Case Else
MsgBox "You're on your own!"
End Select
End Sub