Centrum Skrypciarzy - Microsoft Office

Jak utworzyć listę wszystkich osób znajdujących się na liście dystrybucyjnej programu Microsoft Outlook?

Udostępnij na: Facebook

Skrypciarze odpowiadają na Wasze pytania

Cześć Skrypciarze!

Witamy w rubryce TechNet, w której Skrypciarze z firmy Microsoft odpowiadają na częste pytania dotyczące używania skryptów w administracji systemu. Jeśli macie jakieś pytania z tej dziedziny, zachęcamy do wysłania e-maila na adres: scripter@microsoft.com. Nie możemy zagwarantować odpowiedzi na każde otrzymane pytanie, ale staramy się jak możemy.

Jak utworzyć listę wszystkich osób znajdujących się na liście dystrybucyjnej programu Microsoft Outlook?

Cześć Skrypciarze! Pytanie

Cześć, Skrypciarze! Jak utworzyć listę wszystkich osób znajdujących się na liście dystrybucyjnej programu Microsoft Outlook?

-- KH

Cześć Skrypciarze! Odpowiedź

Cześć, KH. Wiesz, to bardzo interesujące pytanie. Okazuje się, że w niektórych sytuacjach odpowiadanie na pytania wcale nie jest takie proste. Dotyczy to zwłaszcza sytuacji, kiedy ktoś usilnie stara się odwrócić naszą uwagę i po prostu nam dokucza. Skrypciarz piszący te słowa od rana jest obiektem takich zaczepek, a wszystko to dlatego, że chciał być miły i powiedział o trzy słowa za dużo. Słowa, dodajmy, skierowane do Redaktorki. Ale co tam. Zaciskając zęby stara się to wszystko cierpliwie znosić, jakoś odpokutować w końcu musi. Same przeprosiny nie wystarczą jak się okazuje. Ratunku!!! Ktoś przecież musi odpowiedzieć na to pytanie. Uff…. Chwila spokoju. Do dzieła.

Zaraz, na czym skończyliśmy. A tak, lista dystrybucyjna; spróbujmy poniższego wiersza kodu:

Const olFolderContacts  = 10



Set objOutlook = CreateObject("Outlook.Application")

Set objNamespace = objOutlook.GetNamespace("MAPI")

Set objFolder = objNamespace.GetDefaultFolder(olFolderContacts)



Set objList = objFolder.Items("Approved Vendors")



For i = 1 to objList.MemberCount

    Set objMember = objList.GetMember(i)

    Wscript.Echo objMember.Name & ", " & objMember.Address 

Next

Jak widać, tworzenie listy członków listy dystrybucyjnej programu Outlook jest w zasadzie całkiem proste. Zaczynamy od określenia stałej o nazwie olFolderContacts i nadania jej wartości 10; dzięki temu skrypt będzie szukał listy dystrybucyjnej w folderze Contacts (w którym lista dystrybucyjna umieszczona jest domyślnie). Następnie stosujemy poniższe trzy wiersze kodu w celu utworzenia wystąpienia obiektu Outlook.Application i połączenia się z przestrzenią nazw MAPI oraz folderem Contacts :

Set objOutlook = CreateObject("Outlook.Application")

Set objNamespace = objOutlook.GetNamespace("MAPI")

Set objFolder = objNamespace.GetDefaultFolder(olFolderContacts)

Teraz możemy zacząć działać. Załóżmy, że chcemy utworzyć listę członków listy dystrybucyjnej Approved Vendors. Aby to zrobić, najpierw stosujemy poniższy wiersz kodu w celu połączenia się z listą Approved Vendors:

Set objList = objFolder.Items("Approved Vendors")

Nie dzieje się tutaj jeszcze nic szczególnego, po prostu tworzymy odwołanie do danej listy dystrybucyjnej. Gdybyśmy chcieli połączyć się z inną listą dystrybucyjną, podczas tworzenia identyfikatora obiektu podalibyśmy nazwę tej właśnie listy:

Set objList = objFolder.Items("Northwest Region Team")

Po utworzeniu połączenia możemy już zrobić listę wszystkich członków. W tym celu uruchamiamy pętlę For Next, która działa od numeru 1 do numeru oznaczającego liczbę członków umieszczonych na liście. A skąd mamy wiedzieć, ile osób jest na tej liście? To bardzo proste, nie musimy tego wiedzieć; powie nam to właściwość MemberCount programu Outlook:

For i = 1 to objList.MemberCount

Wewnątrz tej pętli używamy metody GetMember w celu uzyskania informacji o poszczególnych członkach listy, pojedynczo i z oznaczeniem każdego członka wskaźnikiem (zmienna licznika „i”):

Set objMember = objList.GetMember(i)

Za każdym razem, gdy zastosujemy metodę Getmember, otrzymamy obiekt AddressEntry. To z kolei umożliwi nam wywołanie echa wartości właściwości Name oraz Address:

Wscript.Echo objMember.Name & ", " & objMember.Address

W efekcie otrzymamy coś, co wygląda następująco:

Ken Myer, kenmyer@fabrikam.com

Pilar Ackerman, pilarackerman@contoso.com

Jonathan Haas jhaas@wingtiptoys.com

Za każdym razem, gdy będziemy próbować uzyskać informacje o członkach listy dystrybucyjnej, pojawi się okno dialogowe z zapytaniem, czy naprawdę chcemy zezwolić na dostęp do tych informacji. Jeżeli odpowiemy „Tak”, skrypt uzyska i wyświetli żądane dane. Jeżeli natomiast odpowiemy „Nie” lub całkowicie zignorujemy okno dialogowe, żadne informacje nie zostaną pobrane ani wyświetlone. Jaki z tego wniosek? Nie można tak po prostu uruchomić skryptu i pozwolić mu działać, należy odpowiedzieć na zapytanie okna dialogowego. Następnie będzie można już pozwolić skryptowi działać samodzielnie, chociaż prawdopodobnie jego praca zajmie tylko kilka sekund. (Oczywiście w zależności od liczby osób znajdujących się na liście dystrybucyjnej.)

Z tego powodu możemy zechcieć zrobić listę osób umieszczonych się na wszystkich listach dystrybucyjnych za jednym zamachem. Żaden problem. Zakładając, że wszystkie listy dystrybucyjne znajdują się w folderze Contacts, poniższy kod powinien to załatwić:

Const olFolderContacts  = 10



Set objOutlook = CreateObject("Outlook.Application")

Set objNamespace = objOutlook.GetNamespace("MAPI")

Set objFolder = objNamespace.GetDefaultFolder(olFolderContacts)

Set objItems = objFolder.Items



For i = 1 to objItems.Count

    If TypeName(objItems.Item(i)) = "DistListItem" Then

        Set objList = objItems.Item(i) 

        Wscript.Echo objList.DLName

        For j = 1 to objList.MemberCount

            Set objMember = objList.GetMember(j)

            Wscript.Echo objMember.Name & ", " & objMember.Address

        Next

        Wscript.Echo

    End If

Next

Na sam koniec, Skrypciarz piszący te słowa chciałby zapewnić, że w przyszłości będzie bardziej uważał na swoje słowa. I już nigdy nie będzie się starał być miły.

Oczywiście to żart. Skrypciarz ten ZAWSZE jest miły. Czasami tylko trochę przesadza.

 Do początku strony Do początku strony

Centrum Skrypciarzy - Microsoft Office