Automatyczne UDW dla każdej wiadomości

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

Moderator: Moderatorzy

Automatyczne UDW dla każdej wiadomości

Postprzez pck » Śr 05.09.2007 09:20

Witam,

czy Outlook 2007 umożliwia zdefiniowanie adresu UDW na jaki ma być wysyłana każda wiadomość?
Chodzi mi oczywiście o dodawanie tego pola z adresem z automatu dla każdej wiadomości, a nie ręcznie przy jej tworzeniu. :)

pzdr,
p.
pck
 
Posty: 2
Dołączył(a): Śr 05.09.2007 09:14

Postprzez michu » Śr 05.09.2007 13:32

Możesz użyć makra:

Kod: Zaznacz cały
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
    Dim oRecip As Recipient
    Set oRecip = Item.Recipients.Add("adres@domena.pl")
    oRecip.Type = olBCC
    oRecip.Resolve
    Set oRecip = Nothing
End Sub


Skopiuje je do modułu ThisOutlookSession i ponownie uruchom Outlook'a.
Pozdrawiam
Michu
michu
 
Posty: 4190
Dołączył(a): N 05.02.2006 17:49
Lokalizacja: Jelenia Góra

Postprzez pck » Śr 05.09.2007 14:39

Chyba coś nie tak.
Zrobiłem to poprzez: Menu Narzędzia -> Makro -> Edytor Visual Basic

W oknie po lewej (Project - Projekt1) rozwinąłem: Projekt1, Microsoft Office Outlook, pojawił się node: ThisOutlookSession.
Dwuklik i w oknie kodu wpisałem to co podałeś. Zapisałem, przeładowałem Outlooka. Tworzę nową wiadomość, wyświetlam pole UDW i niestety jest puste.

Domyślam się, że coś źle zrobiłem, ale co?

pzdr,
p.
pck
 
Posty: 2
Dołączył(a): Śr 05.09.2007 09:14

Postprzez michu » Śr 05.09.2007 14:52

Pole UDW zostanie ustawione dopiero w momencie, gdy klikniesz przycisk "Wyślij".
Pozdrawiam
Michu
michu
 
Posty: 4190
Dołączył(a): N 05.02.2006 17:49
Lokalizacja: Jelenia Góra

Re: Automatyczne UDW dla każdej wiadomości

Postprzez Łukasz » So 21.04.2012 06:24

Witam.
Na jednym komputerze mam dwa konta e-mail jedno moje drugie nie.
Wysyłanie ukrytej kopii używam, żeby na wszystkich komputerach mieć wszystkie wysłane maile.
Więc wysyłam ukrytą kopie do siebie i filtrem kopiuje ją do katalogu wysłane.
Mam pytanie. jak zmienić to makro, żeby kopie ukrytą wysyłało tylko z mojego maila a nie z tego drugiego.
Łukasz
 
Posty: 6
Dołączył(a): So 21.04.2012 06:19

Re: Automatyczne UDW dla każdej wiadomości

Postprzez OShon » So 21.04.2012 11:17

No widzę ze odgrzewasz "dość stare kluchy". Ale i dobrze ze skorzystałeś z szukajki.
Otóż jest przygotowany artykuł, w którym pokazuje jak wysyłać maila z innego niż domyślne konto: Wybór konta przy nadawaniu wiadomości w Microsoft Outlook
Usuń cześć odpowiedzialną za wywołanie okna i wpisz nr na stałe (jaki reprezentuje drugie konto).
Jeśli będziesz miał problem odszukaj dyskusji na ten temat na forum.
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: 9642
Dołączył(a): Cz 19.10.2006 08:31
Lokalizacja: Veracomp SA, VBATools.pl

Re: Automatyczne UDW dla każdej wiadomości

Postprzez Łukasz » So 21.04.2012 12:08

Tylko ja mam utworzone 2 profile i w momencie tworzenia nowej wiadomości nie mam pola do wyboru drugiego konta.
Ale spróbowałem czy makro z tego artykułu da mi wybór konta z jakiego ma wysłać maila.
skopiowałem go i wywala mi błąd w pozycji
objMailItem = Item
jak najadę myszką na item to wyświetla mi się temat jaki wpisałem w mailu.

Czy nie da się zrobić tak żeby działało to na tej zasadzie
if nadawca= xxx@xxx.pl then
i tu wykonywało wysyłanie ukrytej kopi
else
nic
Tylko pytam
do tej pory pisałem makra tylko w excelu i postanowiłem spróbować zautomatyzować pewne sprawy również w outlooku ale narazie nie potrafię zrozumieć działania tego.
brak pewnie podstaw.
Jeśli wiesz gdzie moge poczytać o podstawach żebym rozumiał co każda linijka tego kodu robi to by było świetnie.
ewentualnie jaką książke polecisz.
Narazie wybrałem metode testowania tego co znajde na forach.
Łukasz
 
Posty: 6
Dołączył(a): So 21.04.2012 06:19

Re: Automatyczne UDW dla każdej wiadomości

Postprzez OShon » So 21.04.2012 15:42

Procedura pobiera wartość 2go konta nie profilu.
Nie mam opracowanej metody połączenia się z drugim, nieaktywnym profilem i jego kontem .
Skonfiguruj drugie konto i spróbuj ponownie.
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: 9642
Dołączył(a): Cz 19.10.2006 08:31
Lokalizacja: Veracomp SA, VBATools.pl

Re: Automatyczne UDW dla każdej wiadomości

Postprzez Łukasz » N 22.04.2012 10:03

nie o to mi chodzi żeby łączyło się z drugim profilem tylko sprawdzało jaki jest aktywny.
tzn
profil 1 - adres e-mail konta to xxx@xx.pl
profil 2 - adres e-mail konta to yyy@yy.pl
i teraz jeśli jest aktywny profil 1 to nie wysyła ukrytej kopii wiadomości
a jeśli jest aktywny profil 2 wtedy wysyła ukrytą kopie wiadomości.
i wymyśliłem żeby sprawdzał adres nadawcy, czy jest xxx@xx.pl czy yyy@yy.pl i w zależności od tego jaki jest, wykonuje to makro bądź nie.
w obecnej sytuacji jeśli wpisałem makro z początku tematu wysyła ukryte wiadomości z obu profili.
Łukasz
 
Posty: 6
Dołączył(a): So 21.04.2012 06:19

Re: Automatyczne UDW dla każdej wiadomości

Postprzez OShon » Pn 23.04.2012 07:29

W pow kodzie, powołujemy się na nr konta.
To też mając w jednym profilu skonfigurowane dane konto to reprezentujący nr1 może być innym niż w drugim profilu.
Sprawdź co podaje ta procedura wywołana raz z jednego profilu, raz z drugiego:
Kod: Zaznacz cały
Sub lista_kont()
 Dim olNS As Outlook.NameSpace
 Set olNS = Application.GetNamespace("MAPI")

 Dim x&
 For x = 1 To olNS.Accounts.Count
 Debug.Print x & " - " & olNS.Accounts.Item(x).DisplayName
 Next x
End Sub

Wynik w oknie immediate [Ctrl+g] developera.
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: 9642
Dołączył(a): Cz 19.10.2006 08:31
Lokalizacja: Veracomp SA, VBATools.pl

Re: Automatyczne UDW dla każdej wiadomości

Postprzez Łukasz » Pn 23.04.2012 09:47

ok działa jesteś wielki
zrobiłem to tak:

Kod: Zaznacz cały
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
 Dim olNS As Outlook.NameSpace
 Set olNS = Application.GetNamespace("MAPI")

 Dim x&
 For x = 1 To olNS.Accounts.Count
 konto = olNS.Accounts.Item(x).DisplayName
 Next x
 
 If konto = yyy Then
    Dim oRecip As Recipient
    Set oRecip = Item.Recipients.Add("yyy@yy.pl ")
    oRecip.Type = olBCC
    oRecip.Resolve
    Set oRecip = Nothing
End If
End Sub


tyle że w miejsce yyy wpisałem to co mi wyszło w oknie immediate wg twojego makra
Łukasz
 
Posty: 6
Dołączył(a): So 21.04.2012 06:19

Re: Automatyczne UDW dla każdej wiadomości

Postprzez OShon » Pn 23.04.2012 12:11

Jeśli chcesz sprawdzać konta pod względem nazwy, a oczekiwane konto może być kolejnym to warunek powinien być w pętli:
Kod: Zaznacz cały
    Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
     Dim olNS As Outlook.NameSpace
     Set olNS = Application.GetNamespace("MAPI")

     Dim x&, konto$
     For x = 1 To olNS.Accounts.Count
     konto = olNS.Accounts.Item(x).DisplayName
     If konto = yyy Then '<- wyświetlana nazwa konta
        Dim oRecip As Recipient
        Set oRecip = Item.Recipients.Add("yyy@yy.pl ")
        oRecip.Type = olBCC
        oRecip.Resolve
        Set oRecip = Nothing
        goto koniec '<-wychodzimy nie sprawdzając więcej kont.
     End If
    Next x
     koniec:
    End Sub
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: 9642
Dołączył(a): Cz 19.10.2006 08:31
Lokalizacja: Veracomp SA, VBATools.pl

Re: Automatyczne UDW dla każdej wiadomości

Postprzez Łukasz » Pn 23.04.2012 12:48

dzięki
ale w każdym z profili będzie tylko jedno konto e-mail
więc w moim przypadku pętla chyba nie będzie potrzebna (popraw mnie jeśli się mylę)
Ale dla innych poszukujących pomocy może się to przydać
Łukasz
 
Posty: 6
Dołączył(a): So 21.04.2012 06:19

Re: Automatyczne UDW dla każdej wiadomości

Postprzez OShon » Pn 23.04.2012 13:17

Zamiast x podaj w nawiasie nr konta liczbę: 1 i nie przerabiaj tego w pętli, ani nie pytaj czy DisplayName = nazwa.
Niemniej jednak w przypadku kiedy byś zdecydował się na utworzenie większej ilości kont i zależność wysyłki by się zmieniła oczywiście rozwiązanie z pętlą jest prawidłowe.
Przy jednym koncie taka operacja nie ma sensu - bo wysyłany jest i tak przez niego.

W artykule jaki ci podałem jest jeszcze jeden myk, polegający na skopiowaniu wiadomości do nowego obiektu i przyznanie jemu nr konta do wysyłki.
Następnie zabicie tej, jaka miała być wysłana.
Taki ruch był dla mnie zaskoczeniem, ale brak użycia go w ten sposób będzie powodował że mail będzie przeniesiony do folderu wysyłki danego konta, ale nie będzie przez niego wysłany.
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: 9642
Dołączył(a): Cz 19.10.2006 08:31
Lokalizacja: Veracomp SA, VBATools.pl

Re: Automatyczne UDW dla każdej wiadomości

Postprzez Łukasz » Wt 24.04.2012 13:29

a jeszcze jedno pytanie odnoście tego makra
jak wyglądało by ono w outlook 2002?
Łukasz
 
Posty: 6
Dołączył(a): So 21.04.2012 06:19

Re: Automatyczne UDW dla każdej wiadomości

Postprzez OShon » Wt 24.04.2012 21:10

Niestety parametr .Accounts wprowadzono począwszy od wersji 2007.
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: 9642
Dołączył(a): Cz 19.10.2006 08:31
Lokalizacja: Veracomp SA, VBATools.pl

Re: Automatyczne UDW dla każdej wiadomości

Postprzez jjww » Wt 24.09.2013 08:38

Szukam sposobu aby informacja o UDW nie była widoczna w wysłanym mailu. Czy da się ją usunąć po wysłaniu maila ale przed zapisaniem go do folderu "Wysłane" ? Jak zmodyfikować skrypt dopisujący UDW aby tak działał ? A może da się to usuwać po zapisaniu maila w "Wysłane" ?
Przeszukałem całe forum i nie znalazłem przykładów które by mnie na mnie na coś takiego naprowadziły.
Proszę o podpowiedź.
jjww
 
Posty: 1
Dołączył(a): Wt 24.09.2013 07:20

Re: Automatyczne UDW dla każdej wiadomości

Postprzez OShon » Wt 24.09.2013 09:14

Tak - do polecenia utworzenia obiektu, dopisuje się odpowiedni parametr, który po wysłaniu usuwa pocztę z foldery wysłanych.
Kod: Zaznacz cały
.DeleteAfterSubmit = True
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: 9642
Dołączył(a): Cz 19.10.2006 08:31
Lokalizacja: Veracomp SA, VBATools.pl

Re:

Postprzez gomez.pl » Pn 29.09.2014 10:25

michu napisał(a):Możesz użyć makra:

Kod: Zaznacz cały
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
    Dim oRecip As Recipient
    Set oRecip = Item.Recipients.Add("adres@domena.pl")
    oRecip.Type = olBCC
    oRecip.Resolve
    Set oRecip = Nothing
End Sub


Skopiuje je do modułu ThisOutlookSession i ponownie uruchom Outlook'a.


super sprawa z tym automatem :P
a czy kolega jest w stanie poprawić te marko.
chiałbym mieć wyjątek/filtr, który: jeśli adres na który wysyłam będzie wp.pl (lub firmowa domena) to UDW nie będzie wysyłanie, bo to będzie pewnie korespondencja wew.
i druga kwestia:
Jeśli w tytule będzie oferta lub ofer* (z maską) też będzie wysyłać UDW

będę wdzięczny za pomoc
gomez.pl
 
Posty: 3
Dołączył(a): Pn 29.09.2014 10:21

Re: Re:

Postprzez OShon » Pn 29.09.2014 22:15

gomez.pl napisał(a):chiałbym mieć wyjątek/filtr, który: jeśli adres na który wysyłam będzie wp.pl (lub firmowa domena) to UDW nie będzie wysyłanie, bo to będzie pewnie korespondencja wew.
i druga kwestia: Jeśli w tytule będzie oferta lub ofer* (z maską) też będzie wysyłać UDW

No to trzeba dodać wyjątki na początek wyjścia z procedury przed dodaniem UDW:
Kod: Zaznacz cały
If Item.To Like "@wp.pl" Or _
   Item.To Like "@firma.pl" Then Exit Sub

Drugi warunek chyba nie ma sensu bo nie wyklucza dodawania dodatkowego adresu.
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: 9642
Dołączył(a): Cz 19.10.2006 08:31
Lokalizacja: Veracomp SA, VBATools.pl

Następna strona

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 12 gości