0

I need to quickly toggle File > Options > Advanced > Reminders > Play reminder sound setting.

In certain meetings I need to keep Outlook running to get reminders, but don't want the reminder sound.

Currently, I manually toggle the File > Options > Advanced > Reminders > Play reminder sound checkmark.
This needs to be an effective single-click.
I don't want to restart Outlook as there are usually many things open.

I cannot add it to the Quick Access Toolbar.
enter image description here On the left the option is present in the list of QAT commands, but not in the list of Ribbon commands, otherwise we could access it with ExecuteMso.

Three reasons:

  1. The button is disabled when not in the Calendar window. That's just inelegant.
    enter image description here

  2. When I click the button, Outlook crashes and I lose everything that wasn't saved. (Autosave isn't sufficient or functioning. That's a different problem.)

  3. Understanding how to access Outlook settings with VBA opens a whole new world of possibilities.

This Microsoft article series starting at https://learn.microsoft.com/en-us/office/vba/outlook/concepts/getting-started/automating-outlook-from-a-visual-basic-application is about automating Outlook user tasks, like making a calendar appointment. That's not what I want, I want to manage Outlook's options.

There are some discussions about COM add-ins as one method, but that appears beyond me. The effort to learn COM add-ins is out of line with manual effort to achieve the desired goal.

I have some limited Outlook VBA experience but am reasonably comfortable with VBA in Word, Excel.

Community
  • 1
  • 1
Neman
  • 157
  • 1
  • 11

4 Answers4

1

To disable reminder sound you need to set the below registry key to 0.

Registry key: PlaySound (REG_DWORD) to be set to 0.

Path: HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Outlook\options\Reminder

where 16.0 indicates the Outlook version.

Don't forget to restart Outlook to apply changes.

Eugene Astafiev
  • 47,483
  • 3
  • 24
  • 45
  • Thank you Eugene. I forgot to put in my answer I don't want to restart Outlook, since there are often many items open and I haven't had the best luck with it restoring my full session state. The change, when performed using the File > Options sequence above, doesn't require a restart of Outlook, which leads me to believe it's also possible using some external method. – Neman Apr 18 '22 at 13:22
  • The Outlook object model doesn't expose it via OOM to apply at runtime. – Eugene Astafiev Apr 18 '22 at 13:49
  • Well that's a drag, and it's similar to the wall I ran into thinking through Dmitry's answer. Thank you though! – Neman Apr 18 '22 at 20:01
  • Just to close off this idea, https://stackoverflow.com/questions/11070338/how-to-force-indicate-outlook-to-reread-changed-registry-values hasn't been answered in almost 10 years. :-( – Neman Apr 19 '22 at 00:00
0

These settings can be overridden on the per appointment basis - you can simply set AppointmentItem.ReminderPlaySound property to false using VBA.

Dmitry Streblechenko
  • 62,942
  • 4
  • 53
  • 78
  • Thanks Dmitry. However I believe that affects the individual calendar appointment item. The File > Options > Advanced > Reminders > Play reminder sound setting pictured above is for all reminder sounds (email, tasks, calendar, etc.) that Outlook initiates, and overrides any per-item sound. – Neman Apr 14 '22 at 22:12
  • Hmmm... You can set the option in registry, but Outlook won't refresh its cached value until it is restarted. – Dmitry Streblechenko Apr 15 '22 at 05:34
  • Yeah, and at that point, I might as well manually change the settings. Thanks for the idea though! – Neman Apr 16 '22 at 01:08
0

Simulate a button press with ExecuteMso.
https://learn.microsoft.com/en-us/office/vba/api/Office.CommandBars.ExecuteMso

Hover over the button where you would add it to the ribbon/QAT. See text in brackets at the end.
Are the command codes for ExecuteMso documented?

Private Sub ExecuteMso_TextInBrackets()

    ' https://learn.microsoft.com/en-us/office/vba/api/Office.CommandBars.ExecuteMso
    ' https://stackoverflow.com/questions/25610998/are-the-command-codes-for-executemso-documented
    
    Dim oAppt As Object
    Set oAppt = ActiveInspector.CurrentItem
    Debug.Print oAppt.subject
    
    ActiveInspector.CommandBars.ExecuteMso ("TextInBrackets")
    
End Sub
niton
  • 8,771
  • 21
  • 32
  • 52
  • Thanks niton. That's an excellent idea for anything that has a presence on the Ribbon. For reasons I don't understand, this option isn't available on the Ribbon. I can't past a picture into a comment, so I'll edit the main answer to illustrate. – Neman Apr 18 '22 at 13:11
0

As with most things in life, the answer is a workaround. In this case, it's AutoHotkey to press the keys for me (ALT F, T, down x 9, ALT P, Enter):

;WIN-O toggles the Outlook alarm sound setting
#o::
SetTitleMatchMode,2 ;inexact match
WinGetActiveTitle, MyWindowTitle
If WinActive(" - email@company.com") ;Poor way to "prove" we're in Outlook
{
    ;MsgBox, We're in Outlook
    Send !ft{Down 9}
    Send !p{Enter}
}

Return
Neman
  • 157
  • 1
  • 11