Problem z makrami w Outlooku 2016

Pytania, uwagi, problemy związane z Microsoft Office Outlook, wersje 2007, 2010, 2013 i 2016.

Moderator: Moderatorzy

Problem z makrami w Outlooku 2016

Postprzez Skywanter » Śr 29.11.2017 11:17

Witam,

chciałem utworzyć reguły poczty wychodzącej, które przenosiłyby wysłane wiadomości do określonych folderów. Standardowy kreator reguł w Outlooku pozwala jedynie na kopiowanie wysłanych wiadomości do określonych folderów, jednak to rozwiązanie mnie nie satysfakcjonuje bo nie chce aby wysłane wiadomości były zdublowane zarówno w folderze 'Elementy wysłane' jaki i w podfolderach tego folderu. Dlatego też próbowałem stworzyć makra w VBA, które spełniałyby właśnie to zadanie, ponieważ jest to jedyny sposób na zaprogramowanie Outlooka w taki sposób aby przenosił wysłane wiadomości do wskazanych folderów. Niestety procedura jaką napisałem nie działa i zwraca błąd lub w zależności od jej zmodyfikowania nie działa nie informując w ogóle o błędach. Poniżej kod procedury:

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

Private Sub Application_Startup()
Set oSentItems = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderSentMail).Items
End Sub

Private Sub oSentItems_ItemAdd(ByVal Item As Object)
'a condition to your account Name ..4exemple My account name is Łukasz Przybylski
If Item.SenderName = "Łukasz Przybylski" Then
'or a condition to recipient your massage, we n't consider now
If Item.To = "amwnawrotspj@gmail.com" Then
Item.Move Application.GetNamespace("MAPI").GetDefaultFolder(olFolderSentMail).Folders("Arkadiusz Besler")
End If
End Sub


Natomiast zwracany błąd inrormuje 'Bloch If without End If'.

Procedurę zapisałem w kasie ThisOutlookSesion i za każdym razem resetowałem aplikację Outlooka. Ponadto włączyłem pełną obsługę makr, co jednak nie jest rozwiązaniem jakie chciałbym stosować ze względów bezpieczeństwa. W związku z tym proszę o pomoc w utworzeniu procedury, która wiadomości wysłane z konkretnego konta pocztowego do konkretnego korespondenta przenosiłaby do konkretnego podfolderu w 'Elementach wysłanych'. Proszę o wskazówki jak napisać taką procedurę, gdzie dokładnie ją zapisać i czy można w Outlooku 2016 włączyć automatyczne respektowanie wyłącznie makr stworzonych przez użytkownika.
Skywanter
 
Posty: 9
Dołączył(a): Śr 27.09.2017 10:20

Re: Problem z makrami w Outlooku 2016

Postprzez OShon » Śr 29.11.2017 11:52

Warunek jeśli jest wielo-linijkowy powinien być zakończony.
I z na pierwszy rzut oka brakuje ci jednego end if albo zawinięcia wiersza _

Kod: Zaznacz cały
if coś_tam then coś_innego

'albo

if coś_tam then
coś_innego
end if

'albo

if coś_tam then _
coś_innego
Obrazek
Oskar Shon - MVP Office System/Development 11/17, 3x MCC
Forum moderator: Outlook.pl | ExcelForum.pl | MSDN dział VBA
Zobacz fajne dodatki: Outlooka, Excela, Worda lub PowerPointa
OShon
 
Posty: 9080
Dołączył(a): Cz 19.10.2006 08:31
Lokalizacja: Veracomp SA, VBATools.pl

Re: Problem z makrami w Outlooku 2016

Postprzez Skywanter » Śr 29.11.2017 14:15

Jednak to tak nie działa. Zmieniłem kod zgodnie ze wskazówkami. teraz prezentuje się on tak:

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

Private Sub Application_Startup()
Set oSentItems = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderSentMail).Items
End Sub

Private Sub oSentItems_ItemAdd(ByVal Item As Object)
'a condition to your account Name ..4exemple My account name is Łukasz Przybylski
If Item.SenderName = "Łukasz Przybylski" Then
Item.Move Application.GetNamespace("MAPI").GetDefaultFolder(olFolderSentMail).Folders("Arkadiusz Besler")
End If
'or a condition to recipient your massage, we n't consider now
If Item.To = "amwnawrotspj@gmail.com" Then
Item.Move Application.GetNamespace("MAPI").GetDefaultFolder(olFolderSentMail).Folders("Arkadiusz Besler")
End If
End Sub


Niestety wyskakuje inny błąd: '''Run-time error '-2147221233 (8004010f)' Próba wykonania operacji nie powiodła się. Nie można odnaleźć obiektu''. Po wejściu do debuggera okazuje się że ma problem z folderem ''Arkadiusz Besler''. Czy powodem może być to, że jest to podfolder innego podfolderu w elementach wysłanych. Jeśli tak to jak to obejść?
Skywanter
 
Posty: 9
Dołączył(a): Śr 27.09.2017 10:20

Re: Problem z makrami w Outlooku 2016

Postprzez OShon » Śr 29.11.2017 14:30

Ja nie wiem gdzie masz szukany folder.
Uruchom w Outlooku skrót [Ctrl+6], a zobaczysz prawdziwą strukturę folderów.

Oby sprawdzić to kodem możesz wywołać procedurę:
Kod: Zaznacz cały
sub jaka_sciezka()
dim objFolderDst as MAPIFolder
set objFolderDst = application.getnamespace("MAPI").Pickfolder
msgbox objFolderDst.folderpath


Czyli GetDefaultFolder, a następnie podfoldery (to foldery poprzednika....podobnie jak u ciebie, w tym ze brakuje konta, no chyba że robisz na domyślnym).
Obrazek
Oskar Shon - MVP Office System/Development 11/17, 3x MCC
Forum moderator: Outlook.pl | ExcelForum.pl | MSDN dział VBA
Zobacz fajne dodatki: Outlooka, Excela, Worda lub PowerPointa
OShon
 
Posty: 9080
Dołączył(a): Cz 19.10.2006 08:31
Lokalizacja: Veracomp SA, VBATools.pl

Re: Problem z makrami w Outlooku 2016

Postprzez Skywanter » Wt 05.12.2017 11:33

Dziękuję za odpowiedź. Tylko jak to zapisać w kodzie że docelowy folder 'Arkadiusz Besler' znajduje się w 'Elementy wysłane'\'AMW'\'Arkadiusz Besler'? Ponadto jak zapisać w kodzie wskazanie na konto, że reguła dotyczy konkretnego konta mailowego (adresu bo kilka kont jest pod tym samym imieniem i nazwiskiem)?
Skywanter
 
Posty: 9
Dołączył(a): Śr 27.09.2017 10:20

Re: Problem z makrami w Outlooku 2016

Postprzez OShon » Wt 05.12.2017 11:44

Sprawdź tak jeśli to konto jest domyślne:
Kod: Zaznacz cały
Application.GetNamespace("MAPI").GetDefaultFolder(olFolderSentMail).Folders("AMW").Folders("Arkadiusz Besler")


jeśli nie jest domyślne, to trzeba się do niego odwołać inaczej:
Kod: Zaznacz cały
Application.GetNamespace("MAPI").Folders("Nazwa_konta").Folders("AMW").Folders("Arkadiusz Besler")


Kiedyś napisałem taki kod, który ma podobną zasadę działania: Przenoszenie wielkich maili do archiwum
Obrazek
Oskar Shon - MVP Office System/Development 11/17, 3x MCC
Forum moderator: Outlook.pl | ExcelForum.pl | MSDN dział VBA
Zobacz fajne dodatki: Outlooka, Excela, Worda lub PowerPointa
OShon
 
Posty: 9080
Dołączył(a): Cz 19.10.2006 08:31
Lokalizacja: Veracomp SA, VBATools.pl


Powrót do Microsoft Outlook 2007 / 2010 / 2013 / 2016

Kto przegląda forum

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