我正在以编程方式(使用VBA)访问其他人与我共享的日历。它们列在我的Outlook“人物日历”下。我在网上搜索过这个,所有的建议都没有让我感到困惑。如何从“人物日历”中获取与我共享的所有日历列表,以及特定日历中的一个日历?
答案 0 :(得分:2)
从以下代码中查看返回的值。它按名称搜索某个人,与您在新电子邮件中键入收件人时相同,然后抓取该人员共享日历并枚举所有共享约会。
Dim _namespace As Outlook.NameSpace
Dim _recipient As Outlook.Recipient
Dim calendarFolder As Outlook.Folder
Set _namespace = Application.GetNamespace("MAPI")
Set _recipient = _namespace.CreateRecipient(name)
_recipient.Resolve
If _recipient.Resolved Then
Set calendarFolder = _namespace.GetSharedDefaultFolder(_recipient, olFolderCalendar)
'This would display the calendar on the screen:
'calendarFolder.Display
Dim oItems As Outlook.Items
Set oItems = calendarFolder.Items
'oItems is now a set of all appointments in that person's calendar
'Play on
End if
答案 1 :(得分:0)
我认为这更接近了。它来自Sue Mosher杰出的Microsoft Outlook 2007编程:高级用户和管理员的Jumpstart。我希望她不介意。
Sub ShowOtherUserCalFolders()
Dim objOL As Outlook.Application
Dim objNS As Outlook.NameSpace
Dim objExpCal As Outlook.Explorer
Dim objNavMod As Outlook.CalendarModule
Dim objNavGroup As Outlook.NavigationGroup
Dim objNavFolder As Outlook.NavigationFolder
Dim objFolder As Outlook.Folder
Dim colExpl As Outlook.Explorers
Dim objExpl As Outlook.Explorer
Set objOL = Application
Set objNS = objOL.Session
Set colExpl = objOL.Explorers
Set objExpCal = _
objNS.GetDefaultFolder(olFolderCalendar).GetExplorer
Set objNavMod = objExpCal.NavigationPane.Modules. _
GetNavigationModule(olModuleCalendar)
Set objNavGroup = objNavMod.NavigationGroups. _
GetDefaultNavigationGroup(olPeopleFoldersGroup)
For Each objNavFolder In objNavGroup.NavigationFolders
Set objFolder = objNavFolder.Folder
Set objExpl = _
colExpl.Add(objFolder, olFolderDisplayNormal)
objExpl.Activate
objExpl.WindowState = olMaximized
objExpl.WindowState = olMinimized
Next
Set objOL = Nothing
Set objNS = Nothing
Set objNavMod = Nothing
Set objNavGroup = Nothing
Set objNavFolder = Nothing
Set objFolder = Nothing
Set colExpl = Nothing
Set objExpl = Nothing
End Sub
答案 2 :(得分:-1)
建议帮助那些可能尝试使用此处发布的ShowOtherUserCalFolders()代码的人。此代码将创建多个隐藏的outlook实例,如果多次运行,最终可能会使您的计算机陷入困境。您可以调用当前打开的Outlook(应用程序,而不是创建新的Outlook.application)(必须打开Outlook才能使其工作)。
要执行此操作,请将Dim objOL As Outlook.Application
替换为Dim objOL as Object
,将Set objOL = Application
替换为Set myOlApp = GetObject(, "Outlook.Application")
还要确保关闭objExpCal资源管理器,因为这也会创建一个隐藏的outlook实例,将objExpCal.Close
添加到代码的末尾。