我的大部分任务都是通过Outlook 2016完成的,即我做的大部分工作都是撰写和回复电子邮件。如果我不将Outlook切换到脱机状态,我就会从不断的流入中分心。很多时候,在一小时左右的时间内,我不需要回复,因为任务已经处理好了。
我可以手动切换Outlook offline /online,但我想知道是否有宏可以自动执行此操作。
我的日程安排如下
上午7:45在线10:45在线10:50在线12:45在线12:50离线14:30在线14:35离线15:55在线16:00离线16:55在线17:00离线
具有手动覆盖的能力?
这个是可能的吗?
我可以执行基本的Excel宏,但我从未创建过Outlook宏
发布于 2017-06-30 10:10:46
扩展的MAPI (C++或Delphi) -你可以使用IMAPIOfflineMgr::SetCurrentState。
对于除C++或Delphi之外的其他语言,您可以使用Redemption及其RDOSession。Offline属性:
set Session = CreateObject("Redemption.RDOSession")
Session.MAPIOBJECT = Application.Session.MAPIOBJECT
Session.Offline = true但是请记住,IMAPIOfflineMsg接口不能在不同的进程(例如outlook.exe和excel.exe)之间进行封送处理,因此IMAPIOfflineMgr和RDOSession.Offline都不能在Excel VBA中工作。您可以尝试使用Accessibility API或再次使用Redemption及其SafeExplorer对象来模拟单击“脱机工作”按钮:
set sExplorer = CreateObject("Redemption.SafeExplorer")
sExplorer.Item = Application.ActiveExplorer
set Ribbon = sExplorer.Ribbon
oldActiveTab = Ribbon.ActiveTab
Ribbon.ActiveTab = "Send / Receive"
set Control = Ribbon.Controls("Work Offline")
Control.Execute
Ribbon.ActiveTab = oldActiveTab 'restore the active tab发布于 2017-06-30 22:54:36
多亏了Slipstick的Diane,以及我自己的一些工作,我找到了一个解决方案。请参阅https://forums.slipstick.com/threads/95555-vba-to-switch-outlook-online-offline/
有三组宏-一组用于脱机切换,一组用于联机切换,另一组用于为计划分配任务。前两个宏在这里,第三个你可以在上面的论坛参考中找到。
希望这能帮助到某人
Sub SetOffline()
Dim oNS As NameSpace
Set oNS = Application.Session
If oNS.ExchangeConnectionMode <> olCachedOffline And _
oNS.ExchangeConnectionMode <> olOffline Then
Dim olApp As Outlook.Application
Dim olNS As Outlook.NameSpace
Dim objExpl As Outlook.Explorer
Set olApp = Application
Set olNS = olApp.GetNamespace("MAPI")
Set objExpl = olApp.ActiveExplorer
objExpl.CommandBars.ExecuteMso ("ToggleOnline")
End If
End Sub和
Sub OnlineStatus()
Dim oNS As NameSpace
Set oNS = Application.Session
If oNS.ExchangeConnectionMode = olOnline
Dim olApp As Outlook.Application
Dim olNS As Outlook.NameSpace
Dim objExpl As Outlook.Explorer
Set olApp = Application
Set olNS = olApp.GetNamespace("MAPI")
Set objExpl = olApp.ActiveExplorer
objExpl.CommandBars.ExecuteMso ("ToggleOnline")
End If
End Subhttps://stackoverflow.com/questions/44834901
复制相似问题