Inny niż domyślny Folder kontaktów (lista folderów) [VBA]

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

Moderator: Moderatorzy

Inny niż domyślny Folder kontaktów (lista folderów) [VBA]

Postprzez Shon Oskar » Cz 16.11.2006 10:58

Jak sprawdzić jakie użytkownik ma katalogi kontaktów
ile folderów (po nazwach)?

chaiłbym zrobić ListBoxa w którym bedzie
-domyslny katalog główny kontaktów .GetDefaultFolder(olFolderContacts)
-inne foldery (.GetFolderFromID) ? jak otrzymać liste

Tak aby przypisywać import kontaktów do wskazanego w ListBoxie folderu
O'Shon
Shon Oskar
 
Posty: 182
Dołączył(a): Pn 16.10.2006 09:05
Lokalizacja: Veracomp S.A.

Postprzez michu » Cz 16.11.2006 11:07

Musisz przejść się po wszystkich folderach użytkownika (rekurencyjnie) i sprawdzać jaką mają wartość dla właściwości "DefaultMessageClass". Dla folderów kontaktów włąściwość ta będzie miała początek równy "IPM.Contact".
Pozdrawiam
Michu
michu
 
Posty: 4190
Dołączył(a): N 05.02.2006 17:49
Lokalizacja: Jelenia Góra

Postprzez Shon Oskar » Pt 08.12.2006 13:42

Michu pomóż :oops:
jakoś nie moge sobie poradzić.

jak możesz podaj mi kodzik projektu który wstawia wszystkie katalogi kontaktów do kontrolki ComboBox

i jak zlepić import kontaktu do wybranego w Combo katalogu. :?:
O'Shon
Shon Oskar
 
Posty: 182
Dołączył(a): Pn 16.10.2006 09:05
Lokalizacja: Veracomp S.A.

Postprzez michu » Pt 08.12.2006 16:24

i jak zlepić import kontaktu do wybranego w Combo katalogu

O co dokladnie chodzi z tym importem? O import z pliku CSV? Jeśli tak, to makrem bardzo trudno to zrobić, kupa roboty...
Pozdrawiam
Michu
michu
 
Posty: 4190
Dołączył(a): N 05.02.2006 17:49
Lokalizacja: Jelenia Góra

Postprzez Shon Oskar » Pt 08.12.2006 16:42

nie nie

Rozszeżam aplikacje i mam przygotowany import danych do książki adresowej (z portalu firmowego zasysanego jako XML)
wszystko pięknie gra - jednakże import kontaktu jest inicjowany w katakogu kontakty .GetDefaultFolder(olFolderContacts)
a potrzebował bym w pentelce for zapiąć wyszukanie wszystkich dostępnych innych folderów (.GetFolderFromID) dostępnych na maszynie
i zapełnić nimi ListBoxa

po wybraniu innego katalogu import kontaktu powinien sie do niego włsnie odnossić.
Dziś ludziska (ci którzy mają kilka grup kontakowych) filtruja sobie kontakty i przenosza ręcznie ....

poza tym dołaczyłem do kodu usunięcie duplikatów adresu - on równierz odnosi sie do głównego katalogu, tak to odnosił by sie przy imporcie do wskazanego w listboxie.
O'Shon
Shon Oskar
 
Posty: 182
Dołączył(a): Pn 16.10.2006 09:05
Lokalizacja: Veracomp S.A.

Postprzez michu » Pt 08.12.2006 18:34

W Outlook API jest folder picker. Zdecydowanie łatwiej go użyć niż tworzyć nową formę i wypełniać combo box folderami konataków. Poniższy kod wyświetla folder pickera. Jeśli użytkownik wybierze folder innego typu niż kontakty, to wyświetlona zostanie odpowiednia informacja i picker zostanie wyświetlony ponownie. Po wybraniu foldera przez użytkownika, zapamiętywane są jego identyfikatory EntryID i StoreID. Na ich podstawie możesz później otworzyć folder.

Kod: Zaznacz cały
    On Error Resume Next

    Dim oFolder As MAPIFolder
   
    Dim bExitFor: bExitFor = False
    Do
        Set oFolder = Application.GetNamespace("MAPI").PickFolder
        If oFolder Is Nothing Then
            Exit Sub
        End If
       
        If oFolder.DefaultMessageClass <> "IPM.Contact" Then
            MsgBox "Wybierz folder kontaktow"
        Else
            bExitFor = True
        End If
       
    Loop While Not bExitFor
   
   
    Dim strFolderID, strStoreID
    strFolderID = oFolder.EntryID
    strStoreID = oFolder.StoreID


Teraz na podstawie identyfikatorów foldera, możesz go otworzyć w następujący sposób:

Kod: Zaznacz cały
Set oFolder = Application.GetNamespace("MAPI").GetFolderFromID(strFolderID, strStoreID)
Pozdrawiam
Michu
michu
 
Posty: 4190
Dołączył(a): N 05.02.2006 17:49
Lokalizacja: Jelenia Góra

Postprzez OShon » N 10.12.2006 23:04

Bomba otwiera wszystkie foldery :o

pytanie tylko jak bede chciał dodawać kontakt do innego folderu niż kontakty
np do "Skrzynka odbiorcza" czy "Dziennik"

można to okno ograniczyć tylko do folderów kontakowych ?
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: 10274
Dołączył(a): Cz 19.10.2006 08:31
Lokalizacja: Projekt autorski VBATools.pl

Postprzez OShon » N 10.12.2006 23:09

zresztą ... nie odpisuj
    If oFolder.DefaultMessageClass <> "IPM.Contact" Then
    MsgBox "Wybierz folder kontaktow"

załatwia sprawę.
jakoś przyzwyczajony jestem aby nie pokazywać zbędnych inf. w oknach.

ślicznie dziekuje - zabieram sie do przerabiania pod aplikacje ;)
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: 10274
Dołączył(a): Cz 19.10.2006 08:31
Lokalizacja: Projekt autorski VBATools.pl

Postprzez Shon Oskar » Pn 11.12.2006 11:57

natrafiłem na schoda

jak zadekrarować zapis kontaktu w wybranym katalogu?
w uproszeniu

Kod: Zaznacz cały
Dim oContactFolder As MAPIFolder
   'z pow makro (wybrano folder test
Set oContactFolder = "test"

' Utworzenie i otwarcie nowego kontaktu.
   Set olItem = olApp.CreateItem(olContactItem)

 ' Ustawianie informacje Kontaktu...
   With olItem
      .FullName = xmlNode.selectSingleNode("users_nazwisko").Text & " " & xmlNode.selectSingleNode("users_imie").Text
      .FirstName = xmlNode.selectSingleNode("users_imie").Text
      .LastName = xmlNode.selectSingleNode("users_nazwisko").Text
      '....
      .Save
    end with


zapisywane jest dalej do głównego folderu kontaków (nie do wskazanego)
Michu gdzie brakuje mi Set'a z oContactFolder :?:
O'Shon
Shon Oskar
 
Posty: 182
Dołączył(a): Pn 16.10.2006 09:05
Lokalizacja: Veracomp S.A.

Postprzez michu » Pn 11.12.2006 12:14

Zamiast:
Kod: Zaznacz cały
Set olItem = olApp.CreateItem(olContactItem)

powinno być:
Kod: Zaznacz cały
Set olItem = oContactFolder.Items.Add
Pozdrawiam
Michu
michu
 
Posty: 4190
Dołączył(a): N 05.02.2006 17:49
Lokalizacja: Jelenia Góra

Postprzez Shon Oskar » Pn 11.12.2006 12:52

Działa :lol:

Jak pokoncze pochwale sie OTMem
na razie miliardy pomysłów 11wersja

dzieki raz jeszcze
O'Shon
Shon Oskar
 
Posty: 182
Dołączył(a): Pn 16.10.2006 09:05
Lokalizacja: Veracomp S.A.

Postprzez michu » Pn 11.12.2006 12:59

To czekamy i życzymy powodzenia :D
Pozdrawiam
Michu
michu
 
Posty: 4190
Dołączył(a): N 05.02.2006 17:49
Lokalizacja: Jelenia Góra

Postprzez Shon Oskar » Pt 15.12.2006 13:50

Może jeszcze o coś dopytam

Zapisywanie kontaktów jako domyslne w Outlooku to: Nazwisko, Imie

jak ustawić ten parametr z poziomu VBA przed zapisem kontaktu
a jest 5 możliwości
1. Imie Nazwisko
2. Nazwisko, Imie
3. Firma Imie Nazwisko
4. Nazwisko, Imie (Firma)
5. Firma Nazwisko, Imie
O'Shon
Shon Oskar
 
Posty: 182
Dołączył(a): Pn 16.10.2006 09:05
Lokalizacja: Veracomp S.A.

Postprzez michu » Pt 15.12.2006 14:12

To jest zupełnie osobne pole, które może mieć dowolną wartość tekstową, nie tylko ograniczoną do przypadków, które przedstawiłeś. W kodzie ustaw dla kontaktu właściwość o nazwie FileAs.
Pozdrawiam
Michu
michu
 
Posty: 4190
Dołączył(a): N 05.02.2006 17:49
Lokalizacja: Jelenia Góra


Powrót do Microsoft Outlook

Kto przegląda forum

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