Outlookが早すぎたり遅すぎたりするリマインダーを防ぐ方法は?
例えば、あなたが毎日午前9時から午後6時まで働いているとします。しかし、今朝10時にアポイントメントを作成し、Outlookで2時間前のリマインダーを設定すると、それはあなたの勤務開始前の午前8時にリマインダーが作動することを意味します。一方で、特別な状況ではリマインダーが真夜中に鳴ることがあります。これは非常に不便であり、一部のOutlookユーザーはリマインダーが早すぎたり遅すぎたりすることを防ぎたいと思うかもしれません。ここで、その問題を解決するためのVBAマクロをご紹介します。
- AI技術を活用してメールの生産性を向上させ、迅速な返信、新規作成、メッセージ翻訳などをより効率化
- 自動CC/BCCやルールによる自動転送でメールを自動化;交換サーバーを必要とせず自動返信(外出中)を利用可能...
- BCC警告や、添付ファイルを忘れた場合の「添付ファイルがない場合のリマインダー」などを利用...
- 添付ファイル付きでの返信(全員)、挨拶または日時をシグネチャや件名に自動追加、複数のメールに返信などの機能でメール効率を改善...
- メール取り消し、添付ファイルツール(すべて圧縮、すべて自動保存…)、重複したメールの削除、クイックレポートなどでメール業務を合理化...
Outlookが早すぎたり遅すぎたりするリマインダーを防ぐには、次のように操作できます:
ステップ 1: AltキーとF11キーを同時に押して、Microsoft Visual Basic for Applicationsウィンドウを開きます。
ステップ 2: 左ペインの「Microsoft Outlook Objects」を展開し、次のVBAマクロを「ThisOutlookSession」に貼り付けます。
VBA: Outlookで早すぎるまたは遅すぎるリマインダーを防ぐ
Public WithEvents g_CalendarItems As Outlook.Items
Public Sub Application_Startup()
Set g_CalendarItems = Outlook.Session.GetDefaultFolder(olFolderCalendar).Items
End Sub
Private Sub g_CalendarItems_ItemAdd(ByVal Item As Object)
CheckReminder Item
End Sub
Private Sub g_CalendarItems_ItemChange(ByVal Item As Object)
CheckReminder Item
End Sub
Sub CheckReminder(ByVal Item As Object)
On Error GoTo ProcError
Dim strProcName As String
strProcName = "CheckReminder"
reminderMaxHour = 20
reminderMinHour = 9
Dim aAptItem As Outlook.AppointmentItem
Set aAptItem = Item
If aAptItem.ReminderSet Then
Dim reminderDate As Date
reminderDate = aAptItem.Start - aAptItem.ReminderMinutesBeforeStart / (24 * 60)
reminderHour = (reminderDate - Int(reminderDate)) * 24
tolerance = 0.01 ' avoid floating point small diffs (little bit less than a min)
If reminderHour < reminderMinHour - tolerance Or reminderHour > reminderMaxHour + tolerance Then
' best guess, first try to advance to next minHour
reminderDateSuggestion = reminderDate + (reminderMinHour - reminderHour) / 24
' verify if first guess is valid
If reminderHour < reminderMinHour - tolerance And reminderDateSuggestion <= aAptItem.Start Then
' OK, first guess is valid, keep it
ElseIf reminderHour > reminderMaxHour Then
' go back to max hour (same day)
reminderDateSuggestion = reminderDate - (reminderHour - reminderMaxHour) / 24
Else
' go back to max hour (previous day)
reminderDateSuggestion = reminderDate - (reminderHour + 24 - reminderMaxHour) / 24
End If
rep = MsgBox("The Reminder time is out of specified working period. Would you like to change the Reminder time?" , vbQuestion + vbYesNoCancel)
If rep = vbCancel Then
aAptItem.Display
ElseIf rep = vbYes Then
aAptItem.ReminderMinutesBeforeStart = (aAptItem.Start - reminderDateSuggestion) * 24 * 60
aAptItem.Save
End If
End If
End If
ProcExit:
Exit Sub
ProcError:
MsgBox "Unanticipated error " & Err.Number & " " & Err.Description & vbCrLf & "In procedure: " & strProcName
End Sub
ノート:上記のVBAコード内の以下のパラメータを変更することで、作業時間を指定できます:
reminderMaxHour = 20
reminderMinHour = 9
ステップ 3: このVBAを保存し、Microsoft Outlookを再起動します。
これからは、指定した作業時間外のリマインダー付きで予定を作成すると、「保存して閉じる」ボタンをクリックした後にダイアログボックスが表示され、リマインダーが通知されます。

リマインダー時間が指定されたreminderMinHourより早い場合、ダイアログボックスで「はい」をクリックすると、リマインダー時間が変更され、指定されたreminderMinHourにリマインダーが鳴ります。
リマインダー時間が指定されたreminderMaxHourより遅い場合、ダイアログボックスで「はい」をクリックすると、リマインダー時間が変更され、指定されたreminderMaxHourにリマインダーが鳴ります。
注意: このVBAコードはOutlook 2013でうまく動作しますが、Outlook 2010および2007では動作しません。
最高のオフィス生産性ツール
速報:Kutools for Outlook が無料版をリリース!
新しくなった Kutools for Outlook を100以上の素晴らしい機能とともに体験してください!今すぐダウンロード!
🤖 Kutools AI : 高度なAI技術を活用し、メールの返信、要約、最適化、拡張、翻訳、作成を効率良くこなします。
📧 メール自動化: 自動返信(POPとIMAPに対応) / メール送信のスケジュール設定 /送信時にルールで自動 CC/BCC / 高度なルールによる自動転送 / 挨拶文を自動追加 / 複数宛先のメールを自動で個別のメールに分割 ...
📨 メール管理: メールの取り消し / 件名やその他の条件で迷惑メールをブロック / 重複したメールの削除 / 高度な検索 / フォルダーを整理 ...
📁 添付ファイルPro: 一括保存 / 一括切り離し / 一括圧縮 / 自動保存 / 自動的に切り離す / 自動圧縮 ...
🌟 インターフェースマジック: 😊もっとキレイで楽しい絵文字 /重要なメールの到着をお知らせ / Outlookを閉じずに最小化 ...
👍 ワンクリック便利機能: 全員に【Attachment】付きで返信 /迷惑メール対策 / 🕘送信者のタイムゾーン表示 ...
👩🏼🤝👩🏻 連絡先&カレンダー: 選択したメールから連絡先を一括追加 /連絡先グループを個別のグループに分割 / 誕生日のリマインダーを削除 ...
お好みの言語で Kutools をご利用いただけます ― 英語、スペイン語、ドイツ語、フランス語、中国語など40以上をサポート!
Kutools for Outlook はワンクリックですぐにアンロックできます。今すぐダウンロードして効率をアップしましょう!

