Here is some code. It works perfect unless you open it if there is an excel workbook open.
Private Sub Workbook_Open()
Application.ThisWorkbook.Activate
Application.EnableEvents = True
Application.ScreenUpdating = True
Application.DisplayAlerts = True
FileTAC
End Sub
In a different module i have:
Public Function FileTAC()
Dim MSG As String
Application.DisplayAlerts = True
Application.ScreenUpdating = True
MSG = "No changes or substitutions will be" & vbCrLf
MSG = MSG & "accepted after 12:00 PM the" & vbCrLf
MSG = MSG & "day prior to the scheduled" & vbCrLf
MSG = MSG & "appointment. Call extension 7705" & vbCrLf
MSG = MSG & "for more information." & vbCrLf
MSG = MSG & vbCrLf
MSG = MSG & "Click Yes if you understand." & vbCrLf
If MsgBox(MSG, vbInformation + vbYesNo) = vbNo Then
B4Action
AppClose
GoTo Done
Else
MacrosAreActive
GoTo Done:
End If
Done:
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Exit Function
End Function
Public Function B4Action()
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Dim ws As Excel.Worksheet
For Each ws In ThisWorkbook.Worksheets
Select Case ws.Name
Case "Macros"
Worksheets("Macros").Visible = True
ThisWorkbook.Sheets("Macros").Select
Case Else
ws.Visible = False
End Select
Next ws
GoTo Done
Done:
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Exit Function
End Function
Public Function MacrosAreActive()
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Dim ws As Excel.Worksheet
For Each ws In ThisWorkbook.Worksheets
ws.Visible = True
Next ws
ThisWorkbook.Sheets("Macros").Visible = xlSheetVeryHidden
GoTo Done
Done:
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Exit Function
End Function
Public Function AftSave()
Dim MSG As String
MSG = MSG & "File Saved. Do you wish to close?" & vbCrLf
If MsgBox(MSG, vbInformation + vbYesNo) = vbYes Then
AppClose
Else
MacrosAreActive
End If
GoTo Done
Done:
Exit Function
End Function