Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1517
  • Last Modified:

vba to toggle send/receive in Outlook 2013

In outlook 2010 I could toggle send/receive with this code

Application.ActiveExplorer().CommandBars("Standard").Controls("Send/Re&ceive").Controls("Send/Recei&ve Settings").Controls("&Disable Scheduled Send/Receive").Execute.

So how can I do the same thing with Outlook 2013?

rberke

P.S.  here is the full vba that worked in outlook 2010 and earlier.
Sub toggleScheduledSendReceive()
' this only works in Outlook 2010 and earlier

' the Line1 code must run BEFORE the Line2 .execute command
' if Line1 comes after the .execute it will randomly return the control's PREVIOUS value rather than the TOGGLED value.
        ' this because the .execute runs asynchrously.
       '  Vba starts the .execute, then resumes at line2B 
       '  even though the toggle may or may not have finished.

On Error GoTo err_routine

Dim x

Dim OutlookSendReceiveWasPreviouslyDisabled As Boolean
Line1: OutlookSendReceiveWasPreviouslyDisabled = Application.ActiveExplorer().CommandBars("Standard").Controls("Send/Re&ceive").Controls("Send/Recei&ve Settings").Controls("&Disable Scheduled Send/Receive").State

Line2:
Application.ActiveExplorer().CommandBars("Standard").Controls("Send/Re&ceive").Controls("Send/Recei&ve Settings").Controls("&Disable Scheduled Send/Receive").Execute
Line2b:

If OutlookSendReceiveWasPreviouslyDisabled Then
      MsgBox "Send/Receive schedule has been Enabled."
Else
     msgBox "Send/Receive and Server Import schedules have been Disabled"
End If

exit_sub:
    Exit Sub
err_routine:
msgBox Error$
Resume exit_sub

Open in new window

0
rberke
Asked:
rberke
  • 3
1 Solution
 
David LeeCommented:
Hi, rberke.

Microsoft effectively did away with commandbars in Outlook 2013.  That's why the code you posted doesn't work.  The simplest solution is to use the following SendKeys command to toggle the setting.

    SendKeys "%SGD"
0
 
rberkeAuthor Commented:
I avoid sendkeys whenever possible.

I would far prefer a solution which uses the object model.

Bob
0
 
rberkeAuthor Commented:
I figured it out myself. My solution is in 3A below.


In Outlook 2013, I can now easily execute most ribbon commands from vba.

First, I find the name of the command as follows:

1) right click QAT>Customize the Ribbon > choose commands from > all Commands
2) hover mouse over the desired command and the command name appears.


3A) I then code the vba as follows

    Application.ActiveExplorer.CommandBars.ExecuteMso ("DisableAutoSendReceive")

Please note, the name is slightly misleading, a better name would have been ToggleAutoSendReceive

3B) If an arbitrary command applies to an open message, I would have coded it slightly differently.  For instance:

     Application.ActiveInspector.CommandBars.ExecuteMso ("RemoveAttach")

rberke

p.s. The rumor is that commandbars may be eliminated sometime in the future, but Outlook 2013 is not going to be replaced for at least a couple more years.
0
 
rberkeAuthor Commented:
the sendkeys solution provided by the expert might have worked, but I don't like sendkeys.

I came up with my own solution which is much more general.
0

Featured Post

 [eBook] Windows Nano Server

Download this FREE eBook and learn all you need to get started with Windows Nano Server, including deployment options, remote management
and troubleshooting tips and tricks

  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now