Rozłaczenie kontaktu z Grup dystrybucyjnych podczas usuwania

Pytania, problemy, uwagi związane ze starszymi wersjami Microsoft Outlook 2003, 2002 (XP), 2000, 98

Moderator: Moderatorzy

Rozłaczenie kontaktu z Grup dystrybucyjnych podczas usuwania

Postprzez Shon Oskar » Śr 19.09.2007 13:27

Michu mam problem z którego nie wiem jak wybrnąć

Usuwając kontakty automatycznie usuwane są one z Grup list dystrybucyjnych.
Jest jakaś metoda aby kontakt taki choć usunięty (a następnie wpisany ponownie) nie uciekł z listy dystrybucyjnej?

Może dało by sie zrealizować jakąś pentelką, która będzie czytać wszystkie adresy w listach następnie przypisze je do moment operacji do jakiś stałych. po przebiegu procesu ponownie je uzupełni lub je usunie i stworzy nowe w identycznej ilości podpiętych kontaktów. (o ile dalej występują w książce adresowej kontaktów Outlooka.)

Masz jakieś pomysły jak sie odwołać do grupy/listy dystrybucyjnej aby czytać dane w nich podpięte ?
Ostatnio edytowano Cz 20.09.2007 11:32 przez Shon Oskar, łącznie edytowano 1 raz
O'Shon
Shon Oskar
 
Posty: 182
Dołączył(a): Pn 16.10.2006 09:05
Lokalizacja: Veracomp S.A.

Postprzez michu » Śr 19.09.2007 15:48

Dane z listy dystrybucyjnej utworzonej w Outlook'u możesz czytać przez obiekt DistListItem. Masz w nim kolekcję o nazwie Members, która jest typu AddressEntries i zawiera obiekty AddressEntry - reprezentują one poszczególne wpisy na liście dystrybucyjnej.
Pozdrawiam
Michu
michu
 
Posty: 4190
Dołączył(a): N 05.02.2006 17:49
Lokalizacja: Jelenia Góra

Rozłaczenie kontaktu z Grup dystrybucyjnych podczas usuwania

Postprzez Shon Oskar » Cz 20.09.2007 08:19

dzięki.

Popieprzone to troszkę ...
zakładać i zapisywać pustą listę (bez użytkowników) a potem doklepywać każdego z osobna .add następnie kwitując to pętlą z .AddMember
i jeszcze raz zapisywać.....

.... Napotkałem pewne problemy na O2k (na O2k3 wszystko jest ok)

mam testowy kod:
Kod: Zaznacz cały
Private Sub Listy_dystrybucyjne_zapisywanie()
Dim oContactFolder As MAPIFolder
Dim oDistList As DistListItem
Dim oMailItem As MailItem
Dim oRecipients As Recipients
Dim oRecipient As Recipient

Set oContactFolder = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderContacts)
Set oDistList = oContactFolder.Items.Add(olDistributionListItem)
With oDistList
    .DLName = "! test"
    .Save
End With

    Set oDistList = oContactFolder.Items("! test")
    Set oMailItem = Application.CreateItem(olMailItem)
    Set oRecipients = oMailItem.Recipients
   
    oRecipients.Add ("dupa <dupa@com.pl>")
   
    For Each oRecipient In oRecipients
        DoEvents
        If oRecipient.Resolve Then oDistList.AddMember oRecipient '<-- tu sie wypiernicza'
    Next
With oDistList
    .Save
    .Display
End With
End Sub

Nie przypisuje mi adresu w postaci
oRecipients.Add ("dupa <dupa@com.pl>")
lub
oRecipients.Add ("dupa") mając na uwadze że taki kontakt jest założony w kontaktach

Gdzie jest niekompatybilność.??
Zauważyłem że nie ma .AddMember w 2k
jest natomiast .AddMembers (oRecipient) ale zgłasza "Object required"

jak to ugryść :?:
O'Shon
Shon Oskar
 
Posty: 182
Dołączył(a): Pn 16.10.2006 09:05
Lokalizacja: Veracomp S.A.

Postprzez michu » Cz 20.09.2007 13:56

O dawna nie używam Outlook 2000 więc niestety nie wiem, jak tam wygląda API Outlook'a.
Pozdrawiam
Michu
michu
 
Posty: 4190
Dołączył(a): N 05.02.2006 17:49
Lokalizacja: Jelenia Góra

Postprzez Shon Oskar » Cz 20.09.2007 14:23

No to wiszę z problemem
Usuwam kontakty i dodaje uaktualnione, tymczasem kasują mi sie użytkownicy z list dystrybucyjnych. Przygotowałem przerzucenie użytkowników do XMLa na czas usuwania, teraz walczę z odbudowaniem list na podstawie wzorca.

Może jest inny sposób - np zblokowanie usunięcia kontaktu z listy ... (w co wątpię), a usunięcie go z kontaktów.

Google tez mi nie poradziło - wszędzie Fora pokazują przykłady opierające się na 2k3.
Mogę zastosować odwołanie do wersji bo 2k nie krzyczy w czasie debagowania braku AddMember w kolekcjach 2k
Kod: Zaznacz cały
 If Val(Application.Version) > 9 Then
            If oRecipient.Resolve Then oDistList.AddMember oRecipient
        Else
            'nie działa na 2k! (brak .AddMember) a co działa ?
            'If oRecipient.Resolve Then oDistList.AddMembers (oRecipient)
  End If
O'Shon
Shon Oskar
 
Posty: 182
Dołączył(a): Pn 16.10.2006 09:05
Lokalizacja: Veracomp S.A.

Postprzez michu » Cz 20.09.2007 17:00

Rzuciłem okiem na bibliotekę API Outlook'a 2000. Ma on metodę AddMemebers, której argumentem nie jest obiekt Recipient, tylko kolekcja Recipients. Musisz więc przekazywać do niej kolekcję a nie pojedynczy obiekt.
Pozdrawiam
Michu
michu
 
Posty: 4190
Dołączył(a): N 05.02.2006 17:49
Lokalizacja: Jelenia Góra

Postprzez OShon » Cz 20.09.2007 19:17

Dziękuje ;]
Zrezygnowałem z pojedynczych elementów (.AddMembers oRecipients działa również na 2k3 :twisted: )
Kod: Zaznacz cały
   With objColl_Dist_list
      For i = 1 To .Count
          oRecipients.Add (.Item(i))
      Next
   End With
     
    For Each oRecipient In oRecipients
        DoEvents
            If oRecipient.Resolve Then oDistList.AddMembers oRecipients
    Next
Obrazek
Oskar Shon - MVP Office Dev. 11/20, 3x MCC, 4/9/22 TechNet
Forum moderator: Outlook.pl | ExcelForum.pl | MSDN dział VBA
Zobacz fajne dodatki: Outlooka, Excela, Worda lub PowerPointa
OShon
 
Posty: 10586
Dołączył(a): Cz 19.10.2006 08:31
Lokalizacja: Projekt autorski VBATools.pl

Postprzez michu » Cz 20.09.2007 19:31

Tylko w tej pętli chyba coś teraz nie bangla :?

Kod: Zaznacz cały
    For Each oRecipient In oRecipients
        DoEvents
            If oRecipient.Resolve Then oDistList.AddMembers oRecipients
    Next


Kilka razy dodajesz tę samą kolekcję do listy dystrybucyjnej?
Pozdrawiam
Michu
michu
 
Posty: 4190
Dołączył(a): N 05.02.2006 17:49
Lokalizacja: Jelenia Góra

Postprzez OShon » Cz 20.09.2007 20:53

Masz racje :oops:
wystarczy tylko deklaracja oDistList.AddMembers oRecipients
pętla była konieczna przy pojedynczych elementach

Temat zamknięty.
Dzięki i pozdrawiam.
Obrazek
Oskar Shon - MVP Office Dev. 11/20, 3x MCC, 4/9/22 TechNet
Forum moderator: Outlook.pl | ExcelForum.pl | MSDN dział VBA
Zobacz fajne dodatki: Outlooka, Excela, Worda lub PowerPointa
OShon
 
Posty: 10586
Dołączył(a): Cz 19.10.2006 08:31
Lokalizacja: Projekt autorski VBATools.pl


Powrót do Microsoft Outlook

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 12 gości