Przeniesienie do folderu jako poczta przeczytana [O2000]

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

Moderator: Moderatorzy

Przeniesienie do folderu jako poczta przeczytana [O2000]

Postprzez Shon Oskar » Cz 01.02.2007 12:50

Ustawienie Regóły w Outlooku 2000
na przeniesienie wiadomości do wskazanego folderu jako przeczytana nie ma miejsca.

Jak obejść ten problem ?
Może kodzik VBA gdzie przy odbiorze poczty i osadzeniu jej w danym katalogu bedzie je odznaczał (jako przeczytane)
O'Shon
Shon Oskar
 
Posty: 182
Dołączył(a): Pn 16.10.2006 09:05
Lokalizacja: Veracomp S.A.

Postprzez michu » Cz 01.02.2007 13:12

Nie łapię pytania, nie wiem o co chodzi autorowi :D
Pozdrawiam
Michu
michu
 
Posty: 4190
Dołączył(a): N 05.02.2006 17:49
Lokalizacja: Jelenia Góra

Postprzez Shon Oskar » Cz 01.02.2007 13:52

ok :? napisze to inaczej

Chce aby moja wiadomość która opatrzona jest konkretnym tematem wpadła mi do określonego folderu.

Przygotowuje regułę, w której określam aby wiadomość po przyjściu znikła z folderu głównego i pojawiła się w innym folderze.

Ponadto moim zamierzeniem jest aby ta konkretna poczta (zgodnie z regułą) była przeniesiona jako przeczytana (automatycznie)

Niestety w O2000 nie ma w kreatorze opcji przenieś jako przeczytana. :?:
O'Shon
Shon Oskar
 
Posty: 182
Dołączył(a): Pn 16.10.2006 09:05
Lokalizacja: Veracomp S.A.

Postprzez michu » Cz 01.02.2007 16:33

W takim razie możesz napisać makro, które będzie zaznaczało jako przeczytane wszystkie wiadomości kopiowane/przenoszone do tego folderu.

Kod: Zaznacz cały
Private WithEvents oItems As Items

Private Sub Application_Startup()
    On Error Resume Next
    Set oItems = Application.GetNamespace("MAPI").Folders("Personal Folders").Folders("Jakis folder")
End Sub


Private Sub oItems_ItemAdd(ByVal Item As Object)
    On Error Resume Next
    Item.Unread = False
End Sub


W zdarzeniu Application_Startup musisz do zmiennej oItems przypisać kolekcję elementów z odpowiedniego foldera, który chcesz monitorować.
Pozdrawiam
Michu
michu
 
Posty: 4190
Dołączył(a): N 05.02.2006 17:49
Lokalizacja: Jelenia Góra

Postprzez Shon Oskar » Cz 01.02.2007 16:39

Super - już to sprawdzam ;]
dzieki
O'Shon
Shon Oskar
 
Posty: 182
Dołączył(a): Pn 16.10.2006 09:05
Lokalizacja: Veracomp S.A.

Postprzez Shon Oskar » Cz 08.02.2007 14:54

No niestety nie działa mi ta procedura prawidłowo

Zapisuje katalog do rejestru a potem go wywyłuje - bo uzytkownik może wskazać inny katalog dla autoamtycznie odczytanej wiadomosci.

Kod: Zaznacz cały
Option Explicit
Private WithEvents zItems As Items

Private Sub Application_NewMail()
APPNAME = "Outlook Vera-Instaler"
 On Error Resume Next
    Set zItems = Application.GetNamespace("MAPI").Folders("Personal Folders").Folders("""" & GetSetting(APPNAME, "Settings", "Folder_auto_przeczytany", "") & """")
End Sub

Private Sub Application_Startup()
APPNAME = "Outlook Vera-Instaler"
 On Error Resume Next
    Set zItems = Application.GetNamespace("MAPI").Folders("Personal Folders").Folders("""" & GetSetting(APPNAME, "Settings", "Folder_auto_przeczytany", "") & """")
End Sub

Private Sub zItems_ItemAdd(ByVal Item As Object)
    On Error Resume Next
    Item.UnRead = False
End Sub


Gdzie w "Folder_auto_przeczytany" zapisany jest wskazany folder pocztowy.

ponadto:
- Zmeiniłem oItems na zItems bo nie pamietam czy gdzieś w kodzie już nie uzywam takiej stałej.
- Przypisałem aby wykonywała sie równiez w NewMail()
- Próbowałem też z opuszczeniem apostrofów
Kod: Zaznacz cały
Set zItems = Application.GetNamespace("MAPI").Folders("Personal Folders").Folders(GetSetting(APPNAME, "Settings", "Folder_auto_przeczytany", ""))


i jakoś nie działa :?
O'Shon
Shon Oskar
 
Posty: 182
Dołączył(a): Pn 16.10.2006 09:05
Lokalizacja: Veracomp S.A.

Postprzez michu » Cz 08.02.2007 19:31

Nie mam na razie czasu tego sprawdzić, ale może tam trzeba zawołać
Item.Save
po instrukcji
Item.UnRead = False
Pozdrawiam
Michu
michu
 
Posty: 4190
Dołączył(a): N 05.02.2006 17:49
Lokalizacja: Jelenia Góra

Postprzez Shon Oskar » Pt 09.02.2007 11:06

niestety ;(
does't work
O'Shon
Shon Oskar
 
Posty: 182
Dołączył(a): Pn 16.10.2006 09:05
Lokalizacja: Veracomp S.A.

Postprzez michu » Pt 09.02.2007 18:13

Mi to działa bez problemu. Nie ustawiaj dodatkowo referencji w Application_NewMail. Spróbuj najpierw ze ścieżką foldera wpisaną na stałe. Zrób sobie jakieś message boxy, żeby sprawdzić czy wołana jest w ogóle funkcja Application_Startup i potem zItems_Add.
Pozdrawiam
Michu
michu
 
Posty: 4190
Dołączył(a): N 05.02.2006 17:49
Lokalizacja: Jelenia Góra

Postprzez OShon » Pt 09.02.2007 23:50

Application_Startup wykonuje sie prawidłowo
jednakże zItems_Add
już nie (zrobiłem msgboxa na tej procedurze - nie wyświetla się niestety)

Myślałem że to wina O2k ale w domu niestety też lipa
Podłączałem sub folder skrzynki odbiorczej
następnie folder kosza (Usunięte elementy)
i nic :?

usunąłem również na koniec wszystkie procedury (myślałem że się z czymś grysie)i nic .... dalej nie działa :shock:
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 michu » So 10.02.2007 00:01

A kolekcja zItems w Application_Startup jest różna od Nothing? Możesz zawołać na niej property Count? Zwraca coś sensownego?
Pozdrawiam
Michu
michu
 
Posty: 4190
Dołączył(a): N 05.02.2006 17:49
Lokalizacja: Jelenia Góra

Postprzez Shon Oskar » Pn 12.02.2007 16:21

niestety wywala się

Kod: Zaznacz cały
    Set zItems = Application.GetNamespace("MAPI").Folders("Personal Folders").Folders("Veracomp")
MsgBox zItems.Count


gdy zamienie na polskojęzyczny folder główny
Kod: Zaznacz cały
    Set zItems = Application.GetNamespace("MAPI").Folders("Skrzynka odbiorcza").Folders("Veracomp")


tyż lipa
Nie można odnaleźć obiektu => error (Error 440)
nie wywala sie na komunikacie - ale już na Set zItems
a folder "Veracomp" istanieje

mam jeszcze pytanie co do tego
jezli folder jest w łańcuchu 3ci po "Skrzynka odbiorcza" to teoretycznie powinno to wyglądać tak?
Kod: Zaznacz cały
Application.GetNamespace("MAPI").Folders("Skrzynka odbiorcza").Folders("Veracomp").Folders("Shon Oskar")
O'Shon
Shon Oskar
 
Posty: 182
Dołączył(a): Pn 16.10.2006 09:05
Lokalizacja: Veracomp S.A.

Postprzez michu » Pn 12.02.2007 16:44

Poszczególne nazwy folderów powinny być takie same, jak te wyświetlane przez Outlook'a i tak jak występują w hierarchii. Na przykład mam w Outlook'u podłączoną skrzynkę Exchange i jej nazwa wyświetlana w Outlook'u to: "Skrzynka pocztowa - Michu". Chcę dsotać się do foldera, który jest podfolderem folder "Skrzynka odbiorcza" i nazywa się "Archiwum", całą ścieżkę można by zapisać obrazowo tak:

Skrzynka pocztowa - Michu\Skrzynka odbiorcza\Archiwum

a w kodzie powinno to wyglądać tak (wszystko w jednej linii):

Kod: Zaznacz cały
Set zItems = Application.GetNamespace("MAPI").Folders("Skrzynka pocztowa - Michu").Folders("Skrzynka odbiorcza").Folders("Archiwum").Items


W przytoczonym przez Ciebie kodzie nie ma odwołania do właściwości .Items na końcu, nie pamiętam czy Items jest właściwością domyślną i czy można ją pominąć.
Ostatnio edytowano Pt 25.01.2008 17:09 przez michu, łącznie edytowano 1 raz
Pozdrawiam
Michu
michu
 
Posty: 4190
Dołączył(a): N 05.02.2006 17:49
Lokalizacja: Jelenia Góra

Postprzez Shon Oskar » Pn 12.02.2007 17:09

ok = a jeżeli chciałbym wskazać folder pocztowy dzieki procedurze .PickFolder

no to ilość .folders w zItems ... się troche komplikuje (jezeli mamy podkatalogów X)

może użyć do dodawania ilości indeksów .Folders.Count (pytanie czy można to jakoś wykożystać)

próbowałem jak w ostatnim poście użyć nazwy użytkownika
Kod: Zaznacz cały
Set zItems = Application.GetNamespace("MAPI").Folders(Application.GetNamespace("MAPI").CurrentUser).Folders("Skrzynka odbiorcza").Folders("Veracomp").Items


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

Postprzez Shon Oskar » Pn 12.02.2007 17:16

MAM Zliczył wreszcie :o

Kod: Zaznacz cały
Set zItems = Application.GetNamespace("MAPI").Folders("Foldery osobiste").Folders("Skrzynka odbiorcza").Folders("Veracomp").Items
MsgBox zItems.Count


problemem był brak "Foldery osobiste" => "Czyli Outlook na dziś"
ale zostaje jeszcze problem wskazania folderu w dowolnym miejscu struktury Outlooka.
Bo przygotowuje możliwość zastosowania takiej procedury autoprzeczytania dla dowolnie wskazanego folderu użytkownika (a jaką on będzie miał strukturę - tylko on wie)
O'Shon
Shon Oskar
 
Posty: 182
Dołączył(a): Pn 16.10.2006 09:05
Lokalizacja: Veracomp S.A.

Postprzez michu » Pn 12.02.2007 17:18

ok = a jeżeli chciałbym wskazać folder pocztowy dzieki procedurze .PickFolder
no to ilość .folders w zItems ... się troche komplikuje (jezeli mamy podkatalogów X)

Jeśli chcesz obserwować kilka folderów, to dla każdego musisz mieć osobną zmienną, która będzie referencją do kolekcji Items foldera. W Towim przypadku zItems jest referencją do kolekcji Items jednego foldera i nic więcej do niej nie wsadzisz.

Przełącz się w Outlook'u na widok "Lista folderów" i sprawdź, jak dokładnie nazywa się folder najwyższego poziomu. Dokładnie tej nazwy używaj w kodzie makra.
Pozdrawiam
Michu
michu
 
Posty: 4190
Dołączył(a): N 05.02.2006 17:49
Lokalizacja: Jelenia Góra

Postprzez Shon Oskar » Wt 13.02.2007 11:37

W sumie to nie zalezy mi aby kilka katalogów obsłużyć tą procedurą,
ale chciałbym dać możliwość po przez .picfolder
wyboru katalogu/folderu docelowego (jednego) - gziekolwiek on by sie znajdował.
O'Shon
Shon Oskar
 
Posty: 182
Dołączył(a): Pn 16.10.2006 09:05
Lokalizacja: Veracomp S.A.

Postprzez michu » Wt 13.02.2007 11:46

No to masz jeszcze prościej. Funkcja PickFolder zwróci ci obiekt MAPIFolder. Więc przypiszesz po prostu do zmiennej zItems kolekcję Items tego foldera.
Pozdrawiam
Michu
michu
 
Posty: 4190
Dołączył(a): N 05.02.2006 17:49
Lokalizacja: Jelenia Góra

Postprzez Shon Oskar » Wt 13.02.2007 16:10

No to myślałem aby zrobić tak:

W Formie (user wybiera folder dla niego odpowiedni)
zapisuje sie to do rejestru a w formie pokazuje sie nazwa tego folderu
Kod: Zaznacz cały
   
'.PickFolder...
    SaveSetting APPNAME, "Settings", "Folder_auto_przeczytany_Folder", strFolderID
    SaveSetting APPNAME, "Settings", "Folder_auto_przeczytany_Store", strStoreID


W Autostarcie
(odczytujemy z rejestru dane - jeżeli są nieprawidłowe, to ..on Error olewa tą linijkę i nic się nie dzieje)
Kod: Zaznacz cały
Set zItems = Application.GetNamespace("MAPI").GetFolderFromID(GetSetting(APPNAME, "Settings", "Folder_auto_przeczytany_Folder", 0), GetSetting(APPNAME, "Settings", "Folder_auto_przeczytany_Store", 0))


ale coś nie chodzi ....
O'Shon
Shon Oskar
 
Posty: 182
Dołączył(a): Pn 16.10.2006 09:05
Lokalizacja: Veracomp S.A.

Postprzez michu » Wt 13.02.2007 16:57

A nie powinno być .Items na końcu tej instrukcji?
Pozdrawiam
Michu
michu
 
Posty: 4190
Dołączył(a): N 05.02.2006 17:49
Lokalizacja: Jelenia Góra

Następna strona

Powrót do Microsoft Outlook

Kto przegląda forum

Użytkownicy przeglądający ten dział: alice_cooper, Google [Bot] i 3 gości