電源を切る、再起動する

あまり実用的ではないかもしれませんが紹介します。APIを使う方法もありますが、ここではShell関数を利用します。

Sub 電源を切る()
  If ThisWorkbook.Saved = False Then
    Select Case MsgBox("'" & ThisWorkbook.Name & "' への変更を保存しますか?", vbYesNoCancel + vbExclamation)
      Case vbYes
        ThisWorkbook.Save
      Case vbNo
        ThisWorkbook.Saved = True
      Case vbCancel
        Exit Sub
    End Select
  End If
  Call Shell("C:¥WINDOWS¥RUNDLL.EXE USER.EXE,ExitWindows")
End Sub

Sub 再起動する()
  If ThisWorkbook.Saved = False Then
    Select Case MsgBox("'" & ThisWorkbook.Name & "' への変更を保存しますか?", vbYesNoCancel + vbExclamation)
      Case vbYes
        ThisWorkbook.Save
      Case vbNo
        ThisWorkbook.Saved = True
      Case vbCancel
        Exit Sub
    End Select
  End If
  Call Shell("C:¥WINDOWS¥RUNDLL.EXE USER.EXE,ExitWindowsExec")
End Sub

APIを使うよりこちらの方が単純ではあります。Windowsのセットアップフォルダが違っている場合は修正してください。