Outlook 2007 - automatyczne wstawianie odbiorców - makro ??

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

Moderator: Moderatorzy

Outlook 2007 - automatyczne wstawianie odbiorców - makro ??

Postprzez krajas » Pt 13.04.2018 08:20

Cześć,

czy jest możliwość aby Outlook automatycznie wstawiał konkretnego odbiorcę w zależności od pojawianie się w treści maila jakiegoś słowa ?
Na przykład gdy w treści maila pojawi się słowo, np. Firma_1 to w automatycznie w pole DO... wskoczy mi odbiorca np. Jan.kowalski@...
krajas
 
Posty: 11
Dołączył(a): Pt 13.04.2018 08:17

Re: Outlook 2007 - automatyczne wstawianie odbiorców - makro

Postprzez OShon » Pt 13.04.2018 08:43

Nie. To znaczy nie ma takiego mechanizmu, który by śledził treść maila, podczas jego pisania i wstawiał na jego podstawie odbiorców (no chyba że źle odczytuje twoje intencje).
Jeśli taki masz zamiar to taką czynność można oprogramować, jednakże wiązać się to będzie z uruchomieniem procesu (np pod ikoną czy skrótem klawiszowym) kodu, który prześledzi treść i doda adresy zanim wyślesz mail.
Obrazek
Oskar Shon - MVP Office System/Development 11/19, 3x MCC
Forum moderator: Outlook.pl | ExcelForum.pl | MSDN dział VBA
Zobacz fajne dodatki: Outlooka, Excela, Worda lub PowerPointa
OShon
 
Posty: 9581
Dołączył(a): Cz 19.10.2006 08:31
Lokalizacja: Veracomp SA, VBATools.pl

Re: Outlook 2007 - automatyczne wstawianie odbiorców - makro

Postprzez krajas » Pt 13.04.2018 08:45

Nie chodzi mi o to aby program w czasie rzeczywistym śledził pisany tekst. Wystarczy zdefiniowany przycisk który uaktywniam po napisaniu treści.
krajas
 
Posty: 11
Dołączył(a): Pt 13.04.2018 08:17

Re: Outlook 2007 - automatyczne wstawianie odbiorców - makro

Postprzez OShon » Pt 13.04.2018 09:55

No to w takim razie to nie problem.
Zbuduj kod oparty na podanych niżej podpowiedziach i zapisz go w pliku makr osobistych pod postacią procedury w module.
  • wystarczy odwołać się do otwartej wiadomości Application.ActiveInspector.CurrentItem
  • następnie sprawdzić czy następujące słowo jakiego się spodziewamy: funkcja instr() w warunku if lub case
  • jeśli warunek zostanie spełniony to do pola .to() obiektu mailitem dodasz swoje adresy pod postacią stringa rozdzielonego średnikami.
  • kod podłączamy do szybkiego menu pod postacią ikonki aby skrótem klawiszowym wymusić ten proces

    OL_Wysli_osobno_menu3.png
Obrazek
Oskar Shon - MVP Office System/Development 11/19, 3x MCC
Forum moderator: Outlook.pl | ExcelForum.pl | MSDN dział VBA
Zobacz fajne dodatki: Outlooka, Excela, Worda lub PowerPointa
OShon
 
Posty: 9581
Dołączył(a): Cz 19.10.2006 08:31
Lokalizacja: Veracomp SA, VBATools.pl

Re: Outlook 2007 - automatyczne wstawianie odbiorców - makro

Postprzez krajas » Pn 16.04.2018 06:38

.
Ostatnio edytowano Wt 17.04.2018 07:26 przez krajas, łącznie edytowano 1 raz
krajas
 
Posty: 11
Dołączył(a): Pt 13.04.2018 08:17

Re: Outlook 2007 - automatyczne wstawianie odbiorców - makro

Postprzez krajas » Pn 16.04.2018 11:55

.
Ostatnio edytowano Wt 17.04.2018 07:26 przez krajas, łącznie edytowano 1 raz
krajas
 
Posty: 11
Dołączył(a): Pt 13.04.2018 08:17

Re: Outlook 2007 - automatyczne wstawianie odbiorców - makro

Postprzez krajas » Wt 17.04.2018 06:42

Ok, doszedłem do etapu gdzie "prawie" działa. Problem mam taki że gdy zastosuję poniższy kod w którym są sprawdzane dwa warunki, do pola DO wstawia mi tylko jeden adres email.

Kod: Zaznacz cały
Sub nowy()

    Dim oMail As MailItem
    Set oMail = Application.ActiveInspector.CurrentItem
   
  If (InStr(1, oMail.HTMLBody, "Firma_1", vbTextCompare)) Then
   
   oMail.To = "jan.kowalski@xyz.pl; "
 
        If (InStr(1, oMail.HTMLBody, "Firma_2, vbTextCompare)) Then
   
        oMail.To = "jan.nowak@xyz.pl; "
 
        End If
    End If
       
End Sub


Z kolei gdy zmienię w przypadku drugiego adresu z oMail.To na oMail.CC to ładnie wstawia oba adresy (przynajmniej mam pewność że warunki dobrze działają).
Jednakże, jak zrobić aby adresy dodawały się po średniku z polu DO ? Zależy mi na tym bo tych firm mam około 150 i gdy wkleję wcześniej przygotowany tekst do treści maila, chciałbym aby automatycznie wstawiał ni adresy. Na dzień dzisiejszy muszę analizować każdy tekst i wpisywać ręcznie adresy :(.
Ostatnio edytowano Wt 17.04.2018 08:40 przez krajas, łącznie edytowano 1 raz
krajas
 
Posty: 11
Dołączył(a): Pt 13.04.2018 08:17

Re: Outlook 2007 - automatyczne wstawianie odbiorców - makro

Postprzez OShon » Wt 17.04.2018 08:02

pisząc tak:
Kod: Zaznacz cały
        oMail.To = "adam.sulkowski@pesa.pl; "   
        oMail.To = "dariusz.wiatr@pesa.pl; "

Nadpisujesz element .To

albo napisz tak:
Kod: Zaznacz cały
oMail.To = "adam.sulkowski@pesa.pl; dariusz.wiatr@pesa.pl; "

albo zastosuj kolekcję do dodawania pojedynczego.
Kod: Zaznacz cały
oMail.Recipients.add "adres1"
oMail.Recipients.add "adres2"
Obrazek
Oskar Shon - MVP Office System/Development 11/19, 3x MCC
Forum moderator: Outlook.pl | ExcelForum.pl | MSDN dział VBA
Zobacz fajne dodatki: Outlooka, Excela, Worda lub PowerPointa
OShon
 
Posty: 9581
Dołączył(a): Cz 19.10.2006 08:31
Lokalizacja: Veracomp SA, VBATools.pl

Re: Outlook 2007 - automatyczne wstawianie odbiorców - makro

Postprzez krajas » Wt 17.04.2018 08:41

Dziękuję bardzo za pomoc !

Pozdrawiam :)
krajas
 
Posty: 11
Dołączył(a): Pt 13.04.2018 08:17

Re: Outlook 2007 - automatyczne wstawianie odbiorców - makro

Postprzez krajas » Wt 17.04.2018 09:43

A jeszcze takie pytanie. Czasami zdarza się że pozycje Firma_x i Firma_y ma ten sam adres mailowy. Co zrobić aby w polu DO nie dublował mi adresów ?
krajas
 
Posty: 11
Dołączył(a): Pt 13.04.2018 08:17

Re: Outlook 2007 - automatyczne wstawianie odbiorców - makro

Postprzez OShon » Wt 17.04.2018 15:28

Najlepiej adresy przelecieć kolekcją z olewajką lub słownikiem
W niej tylko 1 element może zawierać tą samą składnię.

szukaj przykładów:
Kod: Zaznacz cały
dim kolekcja as collection
kolekcja.add element_kolekcji
'lub
dim slownik as object:  Set slownik = CreateObject("Scripting.Dictionary")
Obrazek
Oskar Shon - MVP Office System/Development 11/19, 3x MCC
Forum moderator: Outlook.pl | ExcelForum.pl | MSDN dział VBA
Zobacz fajne dodatki: Outlooka, Excela, Worda lub PowerPointa
OShon
 
Posty: 9581
Dołączył(a): Cz 19.10.2006 08:31
Lokalizacja: Veracomp SA, VBATools.pl

Re: Outlook 2007 - automatyczne wstawianie odbiorców - makro

Postprzez krajas » Śr 18.04.2018 08:27

Jeszcze jedno pytanie. Gdybym kiedyś potrzebował aby część mail była dodawana jako DW to muszę zrobić tak ?

Kod: Zaznacz cały
If (InStr(1, oMail.HTMLBody, "Firma_1", vbTextCompare)) Then
  oMail.Recipients.Add "adres 1"
  End If

  If (InStr(1, oMail.HTMLBody, "Firma_2", vbTextCompare)) Then
  oMail.Recipients.Add "adres 2"
  End If

If (InStr(1, oMail.HTMLBody, "Firma_3", vbTextCompare)) Then
  oMail.CC = "adres 3"
  End If

If (InStr(1, oMail.HTMLBody, "Firma_4", vbTextCompare)) Then
  oMail.CC = "adres 4"
  End If


Niestety gdy to testuję to pole DO ładnie się uzupełnia, ale w pole DW wstawia się tylko ostatnia pozycja odbiorców oMail.CC czyli adres 4. Adres 3 zostaje pominięty. Testowałem także z większą ilością adresów i dodawany jest tylko ostatni adres oMail.CC.

Co zrobić aby wszystkie adresy oMail.CC się wstawiły ?
krajas
 
Posty: 11
Dołączył(a): Pt 13.04.2018 08:17

Re: Outlook 2007 - automatyczne wstawianie odbiorców - makro

Postprzez OShon » Śr 18.04.2018 10:16

Używaj tagów [ code ] aby kod był sformatowany

Parametr .CC jest tożsamy z parametrem .To
A więc skoro zamieniliśmy .To na kolekcje .Recipients.Add aby dane się dodawały a nie nadpisywały, to sprawdź jaka jest dla .CC :D
Obrazek
Oskar Shon - MVP Office System/Development 11/19, 3x MCC
Forum moderator: Outlook.pl | ExcelForum.pl | MSDN dział VBA
Zobacz fajne dodatki: Outlooka, Excela, Worda lub PowerPointa
OShon
 
Posty: 9581
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ł: Brak zidentyfikowanych użytkowników i 9 gości