我打算以編程方式(使用VBA)訪問其他人與我共享的日曆。他們被列在我的展望「人民日曆」下。我已經在網上搜索了這一點,所有的建議都只是讓我感到困惑。我如何獲得所有共享給我的日曆的列表,然後從「人員日曆」中選擇一個特定的日曆?VBA,Outlook,看到'人們的日曆
回答
檢出以下代碼返回的值。它按名稱搜索某人,與將收件人鍵入新電子郵件時的方式相同,然後抓取該人共享日曆並枚舉所有共享約會。
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
我覺得這個更接近了。它來自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
只是一個建議,以幫助那些可能試圖使用ShowOtherUserCalFolders()代碼發佈在這裏的人。這段代碼將創建多個隱藏的Outlook實例,如果多次運行可能最終導致您的機器停滯不前。不要創建一個新的Outlook.application,你可以調用當前打開的一個(Outlook必須打開這個工作)。
要做到這一點與Dim objOL as Object
和Set objOL = Application
取代Dim objOL As Outlook.Application
與Set myOlApp = GetObject(, "Outlook.Application")
另外,還要確保你關閉objExpCal Explorer作爲這也將創造前景的一個隱藏的實例,添加objExpCal.Close
你的代碼的末尾。
因爲代碼將在Outlook中運行,所以代碼掛鉤到Outlook的現有實例中,而不是創建新代碼。代碼ForEachLoop絕不會創建多個Outlook實例。 Outlook是一個單一實例類。有關詳細說明,請參閱http://stackoverflow.com/questions/6481398/vba-determining-whether-an-existing-outlook-instance-is-open。 – JimmyPena 2011-11-21 21:09:54
- 1. 在asp.net中查看outlook日曆C#
- 2. 導出Outlook日曆數據到Excel文件 - 共享日曆和VBA
- 3. 從excel導入日期到Outlook日曆
- 4. 遍歷Outlook 2003與VBA
- 5. 使用Outlook API將共享日曆中的日曆項目複製到個人日曆
- 6. Outlook日曆REST API
- 7. IFRAME Outlook日曆(Office365)
- 8. 連接到android上的Outlook日曆
- 9. 慢的代碼連接到Outlook日曆
- 10. 找不到特定的Outlook日曆
- 11. VBA中的日曆
- 12. 導出日曆事件到谷歌日曆,ical,microsoft outlook
- 13. 將SQL Server 2008連接到Outlook日曆?
- 14. 將ASP.net網站連接到Outlook日曆
- 15. 將SharePoint日曆視圖連接到Outlook
- 16. 切換到Outlook日曆使用VSTO
- 17. Adodb連接到Outlook日曆約會
- 18. 集成Outlook日曆到網站/其他
- 19. 設置Outlook日曆提醒
- 20. Outlook日曆加載項
- 21. Winforms C#Outlook風格日曆
- 22. Autohotkey Outlook日曆搜索
- 23. Outlook 2010選擇日曆
- 24. Outlook插件導出日曆
- 25. 與outlook同步php日曆
- 26. Outlook:更改日曆顏色
- 27. C# - Outlook - 獲取新日曆
- 28. Outlook VBA按日期排序
- 29. 枚舉Outlook加載項中的聯繫人和日曆事件?
- 30. MS Excel VBA閱讀Outlook日曆項目很慢
謝謝。我總是在'GetSharedDefaultFolder'調用中遇到'操作失敗'。我使用的'姓名'是與我分享日曆的人。我忽略了什麼? – ForEachLoop 2011-04-12 15:22:14
確保您傳遞了GetSharedDefaultFolder已解析的Outlook.Recipient對象,而不僅僅是一個「名稱」字符串。 – Alain 2011-04-12 16:54:53
除非'_recipient.Resolved'成功,否則我無法訪問GetSharedDefaultFolder,是否正確?一種觀察是,在Outlook 2007中,「人員日曆」在文件夾列表視圖中不顯示爲共享文件夾。那是問題嗎? – ForEachLoop 2011-04-12 17:29:57