Znane problemy w programie Outlook 2010 podczas korzystania z modelu obiektów
Oryginalny numer KB: 2265515
Podsumowanie
W tym artykule opisano znane problemy, które mogą wystąpić podczas korzystania z modelu obiektów Microsoft Outlook 2010.
Nie można utworzyć Outlook.Application
obiektu na podstawie procesu z podwyższonym poziomem poziomu
Nie można zautomatyzować programu Outlook przy użyciu procesu z podwyższonym poziomem uprawnień w systemie Windows Vista, Windows 7 lub w dowolnym innym systemie operacyjnym, który umożliwia uruchamianie procesów z podwyższonym poziomem uprawnień. Jest to podstawowe ograniczenie modelu COM. Zarówno program Outlook, jak i programy niestandardowe automatyzujące program Outlook muszą być uruchomione na tym samym poziomie integralności.
Zdarzenia BeforeItemMove i BeforeFolderMove nie występują
Istnieje wiele scenariuszy, w BeforeItemMove
których zdarzenia i BeforeFolderMove
nie występują. Znane scenariusze obejmują usuwanie terminów z paska To-Do, usuwanie spotkań z kalendarza i paska To-Do, implementowanie zdarzeń w folderach innych niżefault oraz usuwanie elementów za pomocą polecenia Ignoruj konwersację. Te problemy zostały rozwiązane w aktualizacji zbiorczej z grudnia 2010 r. dla programu Outlook 2010.
Metoda GetProperty kończy się niepowodzeniem w trybie online
Jeśli używasz programu Microsoft Exchange 2010 w trybie online i używasz GetProperty
metody do pobrania właściwości z niezapisanego elementu, metoda może zakończyć się niepowodzeniem. Wynika to ze zmiany sposobu obsługi nazwanych właściwości przez program Exchange 2010. Dotyczy to również programu Outlook 2007. Bieżące obejścia obejmują następujące kwestie:
- Użyj programu Outlook w trybie pamięci podręcznej.
- Przed wywołaniem metody upewnij się, że element jest w zapisanym
GetProperty
stanie.
Okno inspektora może nie zostać poprawnie zamknięte
Jeśli zaimplementujesz funkcję GetVisibleCallback
w usłudze Microsoft Visual Studio Tools dla Microsoft Office (VSTO), użytkownik może nie być w stanie poprawnie zamknąć okna inspektora. Ten problem został rozwiązany w aktualizacji zbiorczej z lutego 2011 r. dla programu Outlook 2010.
Zdarzenie BeforeCheckNames występuje w innym czasie niż w programie Outlook 2007
W programie Outlook 2010 zdarzenie BeforeCheckNames występuje po rozwiązaniu adresatów, a nie przed ich rozwiązaniem. Oznacza to, że anulowanie zdarzenia nie ma wpływu. Ten problem został rozwiązany w aktualizacji zbiorczej programu Outlook 2010 z lutego 2011 r.
Model obiektów widoków może nie odpowiadać rzeczywistemu widokowi w interfejsie użytkownika
Istnieją scenariusze, w których jeśli programowo zmienisz widoki lub pobierzesz ustawienia widoku, ustawienia w modelu obiektów mogą nie odpowiadać rzeczywistym ustawieniu widoku wyświetlanym przez program Outlook w interfejsie użytkownika. Wprowadzono ulepszenia w aktualizacji zbiorczej programu Outlook 2010 z lutego 2011 r., aby rozwiązać ten problem.
Załączniki nie są zachowywane poprawnie podczas korzystania z okna Wstawianie elementu
Jeśli używasz modelu obiektów programu Outlook do dodawania i usuwania załączników, możesz mieć dodatkowy załącznik, jeśli użytkownik wstawi załącznik elementu za pomocą polecenia Wstaw element. Wynika to z usterki w sposobie, w jaki okno dialogowe traktuje wszystkie załączniki jako podejrzane, nawet jeśli nie są podejrzane. W związku z tym dodatkowe załączniki są zapisywane razem z komunikatem. Ten problem został rozwiązany w aktualizacji zbiorczej z lutego 2010 r. dla programu Outlook 2010.
Nie można wstawić załączników elementów przy użyciu konta POP/IMAP
Jeśli użyjesz Attachments.Add
metody , aby dodać załączniki elementów programu Outlook przy użyciu konta POP/IMAP, wywołanie zakończy się niepowodzeniem. Ten problem został rozwiązany w aktualizacji zbiorczej z grudnia 2010 r. dla programu Outlook 2010.
MailItem.Recipients.ResolveAll
funkcja usuwa adresatów z pola Do
Jeśli użytkownik doda nierozwiązanego adresata do wiadomości w trybie redagowania, a następnie Recipients.ResolveAll
zostanie wywołana metoda dla tego elementu, adresaci zostaną usunięci. Nie ma planów zmiany tego zachowania.
Metoda GetAssociatedAppointment
kończy się niepowodzeniem dla żądania spotkania w folderze Elementy wysłane
Jeśli spróbujesz pobrać termin z żądania spotkania w folderze Elementy wysłane, wywołanie zakończy się niepowodzeniem. Ten problem został rozwiązany w aktualizacji zbiorczej z lutego 2011 r. dla programu Outlook 2010.
Dane terminu mogą nie zostać zaktualizowane, jeśli okno inspektora jest otwarte
Ze względu na wewnętrzne zmiany w sposobie, w jaki program Outlook 2010 obsługuje terminy i buforuje je, model obiektów może nie dostarczać aktualnych informacji o wyjątkach od terminów, jeśli odpowiedni termin jest otwarty w oknie inspektora. To zachowanie występuje nawet wtedy, gdy odwołujesz się do niego i ponownie pobierasz element ze sklepu. Aby obejść ten problem, upewnij się, że okno terminu jest zamknięte. Nie ma planów zmiany tego zachowania.
NavigationFolder.Folder
generuje błąd w folderze udostępnionym
Jeśli spróbujesz pobrać obiekt Folder z obiektu NavigationFolder
, może zostać wyświetlony komunikat o błędzie "Operacja nie powiodła się". Ten problem występuje w przypadku funkcji folderu kalendarza udostępnionego, które są nowe w programie Outlook 2010. Pobranie obiektu NavigationFolder.Folder
przed zainicjowaniem programu Outlook powoduje wystąpienie tego problemu. Inicjowanie nie odbywa się domyślnie. Aby obejść ten problem, najpierw odwołaj się do domyślnego folderu kalendarza i wywołaj GetExplorer
metodę . Pośrednio powoduje to, że program Outlook inicjuje kalendarze udostępnione. Poniższy przykład kodu VBA programu Outlook ilustruje ten problem i obejście problemu:
Sub GetCalendars()
' Work around
Set oCalFolder = Session.GetDefaultFolder(olFolderCalendar)
Set oCalExp = oCalFolder.GetExplorer
Dim oModules As Outlook.CalendarModule
Dim oMyCalendarGroup As Outlook.NavigationGroup
Dim oPeopleNavGroup As Outlook.NavigationGroup
Set oModules = ActiveExplorer.NavigationPane.Modules.GetNavigationModule(OlNavigationModuleType.olModuleCalendar)
Set oMyCalendarGroup = oModules.NavigationGroups.GetDefaultNavigationGroup(OlGroupType.olMyFoldersGroup)
Set oPeopleNavGroup = oModules.NavigationGroups.GetDefaultNavigationGroup(OlGroupType.olPeopleFoldersGroup)
GetNavFolders oMyCalendarGroup
GetNavFolders oPeopleNavGroup
End Sub
Private Sub GetNavFolders(ByVal obj As Outlook.NavigationGroup)
Set oNavFolders = obj.NavigationFolders
Dim oNavFolder As Outlook.NavigationFolder
For Each oNavFolder In oNavFolders
Debug.Print oNavFolder.DisplayName & "==>" & oNavFolder.Folder ' <-- this errors
Next
End Sub