identyfikator otwartej wiadomości

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

Moderator: Moderatorzy

identyfikator otwartej wiadomości

Postprzez amis » Wt 16.11.2021 20:10

Cześć,
Używam formularza w Outlook do zapisywania maili do bazy access wraz z np. przesłaniem maila do wybranego z formularza adresata.
Generalnie działa mi to dobrze wtedy gdy mam otwartego jednego maila.
Problem zaczyna się w monecie gdy mam otwartych kilka okien z wiadomościami, bo wtedy w jakiś losowy sposób wybiera się wiadomość przesyłana dalej (z pośród otwartych okien).
Makro do otwarcia formularza otwieram z poziomu otwartego okna wiadomości, więc teoretycznie powinienem wiedzieć która to wiadomość. I tu mam następujące pytanie.
Czy jest jakiś identyfikator wiadomości, abym mógł wstawić w kod i mieć pewność, że przesyłam konkretnego maila z którego było uruchomione makro.
to część kodu.
wiem, albo wydaje się mi że wiem, że problem jest w tym że używam całej kolekcji.
Kod: Zaznacz cały
        For Each objItem In Application.ActiveExplorer.Selection
            If objFolder.DefaultItemType = olMailItem Then
                If objItem.Class = olMail Then
                    Response = MsgBox("Forward message (" + Item.Subject + ") to Appended Subject")
                    Set myForward = objItem.Forward
                    myForward.BodyFormat = olFormatHTML
                    myForward.Subject = objItem.Subject
                    myForward.Recipients.Add JakiEmailOdbiorcy(ComboPrzydzielenieDo)
                    myForward.HTMLBody = "<I><font size=4><font color=maroon> " & TextOpisu & "</font></font></I><br><br>" & Podpis & Chr(13) & "<br><br><br><br>"
                    & "Od: " & objItem.SenderName & "; Do: " & objItem.To & "; Dw: " & objItem.CC & "; Kiedy: " & "<br><br><br><br>" & objItem.HTMLBody
                    myForward.Save
                    myForward.Send
                End If
            End If
        Next
amis
 
Posty: 11
Dołączył(a): Cz 12.03.2015 20:30

Re: identyfikator otwartej wiadomości

Postprzez OShon » Wt 16.11.2021 22:53

No nareszcie jakieś pytanie na poziomie :)
No tak, jak otwierasz wiadomość, albo inną albo jeszcze inną to musisz sie posłygiwać zdarzeniem.
Nie systemowym ale go utworzyć, co nie jest takie łatwe aby sobie tym zarządzać

Kod: Zaznacz cały
Dim WithEvents oInspectors As Inspectors
Set oInspectors = Application.Inspectors
...
Inspector.CurrentItem.MessageClass


lepiej jest odnosić sie do Tego maila albo wskazanego jeśli nie jest otwarty

Kod: Zaznacz cały
Dim oItem As MailItem
 Select Case TypeName(Application.ActiveWindow)
 Case "Explorer":  Set oItem = ActiveExplorer.Selection.Item(1)
 Case "Inspector": Set oItem = ActiveInspector.CurrentItem
 Case Else: Exit Sub
 End Select
Obrazek
Oskar Shon - MVP Office Dev. 11/22, 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: 11232
Dołączył(a): Cz 19.10.2006 08:31
Lokalizacja: Projekt autorski VBATools.pl

Re: identyfikator otwartej wiadomości

Postprzez amis » Cz 18.11.2021 06:56

Cześć,

praktycznie dokładnie taki jak ten poniższy kod mam przy załadowaniu (otwarciu) formularza podczas z otwartego okna wiadomości,

Kod: Zaznacz cały
Dim oItem As MailItem
 Select Case TypeName(Application.ActiveWindow)
 Case "Explorer":  Set oItem = ActiveExplorer.Selection.Item(1)
 Case "Inspector": Set oItem = ActiveInspector.CurrentItem
 Case Else: Exit Sub
 End Select


ten który prezentowałem w pierwszym poście jest przypisany do przycisku "wyślij" którym de facto wysyłam maila wraz z zapisaniem pewnych danych do bazy access.
w formularzu wybieram jakieś daty, i inne parametry z pól zarówno tekstowych jak i pól wyboru czy list, ale wg mnie nie ma to żadnego znaczenia dla mojego problemu.
Zdarza się różnie, czasem mam otwarte tylko jedno okno i wtedy problemu nie ma, a czasem okien mam kilka i wtedy to już bywa różnie.
np.
- może być tak że mam otwarte jakieś okno wiadomości, z niego otwieram formularz, otwieram kolejną wiadomość (tracąc focus pierwszego okna z wiadomością), wracam do pierwotnie wywołanego okna wiadomości z otwartym formularzem i wysyłam za jago pomocą wiadomość,
- może być tak że mam otwarte kilka okien wiadomości, z dowolnego otwieram formularz i wysyłam za jago pomocą wiadomość,
- może też być tak, że tracę fokus okna klikając na liście wiadomości i uaktywniając inną nie otwierając jej,
nie do końca jestem w stanie jednoznacznie wskazać w jakiej sytuacji wysyłam w efekcie złego maila (tzn. z innej otwartej wiadomości).

dodam, że otwarcie innych okien czasem jest konieczne. oczywiście mogę zamknąć formularz, sprawdzić co mam sprawdzić i wywołać formularz ponownie, ale wolałbym rozwiązać mój problem.
Prośba o wytłumaczenie bo nie wiem jak zabezpieczyć się przed tymi przypadkami.
amis
 
Posty: 11
Dołączył(a): Cz 12.03.2015 20:30

Re: identyfikator otwartej wiadomości

Postprzez OShon » Cz 18.11.2021 09:28

Przeczytaj zatem o inspektorze i go obsłuż w kodzie.
albo utwórz przycisk w menu wiadomości a nie w menu ogólnym i w tedy będziesz miał większy pożytek z CurrentItem
Obrazek
Oskar Shon - MVP Office Dev. 11/22, 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: 11232
Dołączył(a): Cz 19.10.2006 08:31
Lokalizacja: Projekt autorski VBATools.pl

Re: identyfikator otwartej wiadomości

Postprzez amis » Cz 18.11.2021 18:49

Przycisk mam w menu wiadomości, ale o inspektorze poczytam i najwyżej wrócę jeszcze z pytaniem.
Na razie dzięki.
Pozdr.,
Mirek
amis
 
Posty: 11
Dołączył(a): Cz 12.03.2015 20:30

Re: identyfikator otwartej wiadomości

Postprzez OShon » Cz 18.11.2021 21:28

Ja mowie o menu w wiadomości a nie menu aplikacji.
No ale poczytaj. Jak widzisz Case "Inspector" sie do niej odwołuje, ale wywołana z aplikacji nie wie którą masz otwartą.
Wysyłając z wiadomości zawsze będzie dobra.
Obrazek
Oskar Shon - MVP Office Dev. 11/22, 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: 11232
Dołączył(a): Cz 19.10.2006 08:31
Lokalizacja: Projekt autorski 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 22 gości