検索上位ででてくるWSH使うのは安定しないから使わないほうが良い
Private Declare Function MessageBoxTimeoutA Lib "user32" ( _
ByVal hWnd As Long, _
ByVal lpText As String, _
ByVal lpCaption As String, _
ByVal uType As Long, _
ByVal wLanguageId As Long, _
ByVal dwMilliseconds As Long) As Long
...
Function TimeoutMsgBox(aStr As String, aTitle As String, aTimeouts As Long, aNType As Long) As Long
Dim AnswerVal As Long
AnswerVal = MessageBoxTimeoutA(0, aStr, aTitle, aNType, 0, aTimeouts * 1000)
TimeoutMsgBox = AnswerVal
End Function
Sub テスト()
If TimeoutMsgBox("5秒以内にキャンセルしないと自動でブックを閉じます", "確認", 5, vbOKCancel) <> vbCancel Then
'ブック閉じる
ActiveWorkbook.Close SaveChanges:=True
End If
End Sub