Artykuły

A A A
Drukuj Ekportuj do PDF
Opublikowane: 2006.09.08 18:50 | Michał Bednarz | Aktualizacja: 2011.10.07 14:37

Przykładowe makra dla Office Outlook

Prezentujemy artykuł będący zbiorem kilku przykładowych makr przydatnych w codziennej pracy z programem pocztowym Microsoft Office Outlook. Makra te doskonale nadają się do wykorzystania bez przeróbek, jednak zachęcamy do własnych eksperymentów i dostosowywania poleceń do konkretnych scenariuszy.

Prezentujemy artykuł będący zbiorem kilku przykładowych makr przydatnych w codziennej pracy z programem pocztowym Microsoft Office Outlook. Makra te doskonale nadają się do wykorzystania bez przeróbek, jednak zachęcamy do własnych eksperymentów i dostosowywania poleceń do konkretnych scenariuszy.

Drukowanie wiadomości bez nagłówków

Wiadomość pocztowa drukowana jest przez Outlook'a zawsze przy użyciu takiego samego szablonu. Przed treścią wiadomości wstawiane są pola nagłówka, takie jak: Od, Wysłano, Do, DW, Tytuł, Załączniki. Dodatkowo drukowane są ikony symbolizujące poszczególne załączniki.

Czasami zachodzi potrzeba wydrukowania wiadomości bez powyższych pól. Na przykład, gdy pole DO lub DW zawiera bardzo dużo adresów albo, gdy nie chcemy, aby drukowane były informacje o załącznikach wraz z ich ikonami. Niestety ustawienia Outlook'a nie pozwalają na definiowanie, które pola nagłówków powinny być drukowane. Nie można też zmienić szablonu używanego przez Outlook'a do drukowania wiadomości. Można tylko definiować niektóre ustawienia dotyczące szablonu, takie jak dodanie stopki, zmiana szerokości marginesów, czy orientacja strony.

Poniższe makro drukuje wszystkie obecnie zaznaczone wiadomości pocztowe, ale bez nagłówków oraz bez informacji o załącznikach (nie można niestety usunąć pól OD oraz Wysłano). Jeśli chcesz usunąć tylko wybrany nagłówek, usuń odpowiednią część kodu z makra.

 Sub PrintWithoutHeaders() Dim oMail For Each oMail In Application.ActiveExplorer.Selection oMail.Copy ' Usuń nagłówek DO oMail.To = "" ' Usuń nagłówek DW oMail.CC = "" ' Usuń tytuł - ten zazwczaj będziesz chciał pozostawić oMail.Subject = "" ' Usuń wszystkie załączniki For nIndex = oMail.Attachments.Count To 1 oMail.Attachments.Remove (nIndex) Next oMail.PrintOut oMail.Delete Next End Sub

Tworzenie kontaktów na podstawie zaznaczonych wiadomości

W Outlook'u można automatycznie utworzyć kontakt na podstawie otrzymanej wiadomości pocztowej. Wystarczy przeciągnąć wiadomość do foldera typu "Kontakt". Utworzony zostanie nowy kontakt, jego imię i nazwisko oraz adres e-mail zostaną automatycznie wypełnione na podstawie adresu nadawcy wiadomości pocztowej. Treść wiadomości zostanie zapisana w polu notatek kontaktu. Jeśli używasz Outlook'a 2003 to operację taką najprościej jest wykonać w widoku "Lista folderów".

Poprzez przenoszenie wiadomości pocztowych do foldera kontaktów można w prosty i naturalny sposób tworzyć nowe kontakty. Czasami jednak istnieje konieczność utworzenia kontaktów z dużej liczby wiadomości. Na przykład, gdy użytkownik otrzymuje dużo wiadomości lub gdy chce utworzyć kontakty z wiadomości otrzymanych we wcześniejszym okresie czasu. Niestety po zaznaczeniu wielu wiadomości pocztowych i przeniesieniu ich do foldera kontaktów spotyka nas niemiła niespodzianka. Spodziewalibyśmy się, że Outlook utworzy jeden kontakt odpowiadający każdej z wiadomości pocztowych. Tak jednak się nie stanie - utworzony zostanie tylko jeden kontakt, a jego pole notatek zostanie wypełnione treścią wszystkich wiadomości pocztowych. Zachowanie takie jest dla zdecydowanej większości użytkowników zupełnie bezużyteczne.

Jeśli chcemy utworzyć wiele kontaktów na podstawie wielu zaznaczonych wiadomości pocztowych, to pozostaje nam napisać odpowiednie makro, takie jak przedstawione poniżej:

 Sub ContactsFromMails() Set contactFolder = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderContacts) For Each Item In Application.ActiveExplorer.Selection Set mailCopy = Item.Copy Set oNewContact = Item.Move(contactFolder) oNewContact.Attachments.Remove (1) '(*1) oNewContact.Body = "" '(*2) oNewContact.Save Next End Sub

Makro tworzy nowe kontakty w domyślnym folderze kontaktów na podstawie zaznaczonych wiadomości pocztowych. Po utworzeniu nowego kontaktu, wiadomość pocztowa jest dołączona do kontaktu jako załącznik, kontakt zawiera również w polu notatek treść wiadomości. Makro usuwa zarówno załącznik jak i treść wiadomości z kontaktu. Jeśli chcesz, aby oryginalna wiadomość pozostała jako załącznik, usuń linię oznaczoną komentarzem (*1). Jeśli chcesz, aby kontakt zawierał treść oryginalnej wiadomości w polu notatek, usuń linię oznaczoną komentarzem (*2).

Zapis załączników z wszystkich zaznaczonych elementów na dysk

Poniższe makro zapisuje załączniki z wszystkich zaznaczonych elementów na dysku. Zmienna strDestFolderPath (*1) określa docelowy katalog na dysku, makro tworzy w nim podkatalog o takiej samej nazwie jak folder w Outlook'u, w którym znajdują się zaznaczone elementy (*3). Następnie przetwarzane są wszystkie zaznaczone elementy, mogą to być elementy dowolnego typu - nie tylko wiadomości pocztowe. Na dysk zapisywane są wszystkie załączniki typu olByValue (pliki) i olEmbeddeditem (inne elementy Outlook'a) (*4). Załączniki typu olOLE (osadzone obiekty OLE) nie mogą zostać zapisane na dysk przy użyciu funkcji API Outlook'a, natomiast typ olByReference (odnośniki do plików) nie jest już używany.

Jeśli wartość zmiennej bDeleteAttach (*2) jest ustawiona na True, to wszystkie zapisane załączniki zostaną usunięte z oryginalnego elementu (*5). Do usuwania załączników nie została użyta funkcja Attachments::Remove ponieważ nie działa ona w programie Outlook 2000.

Po przetworzeniu elementu, jest on odpowiednio oznaczany, aby nie był przetwarzany ponownie przy następnym uruchomieniu makra (*6).

 Sub SaveAttachments() On Error Resume Next ' (*1) Ścieżka do głownego foldera gdzie mają być zapisywane załączniki Dim strDestFolderPath strDestFolderPath = "C:\temp\attachments\" ' (*2) Jeśli chcesz usuwać zapisane załączniki, zmień wartość tej zmiennej na True Const bDeleteAttach = False ' (*3) Utwórz nowy folder o takiej samej nazwie jak folder w Outlook'u Set fso = CreateObject("Scripting.FileSystemObject") fso.CreateFolder strDestFolderPath Dim oFolder As MAPIFolder Set oFolder = Application.ActiveExplorer.CurrentFolder strDestFolderPath = strDestFolderPath & oFolder.Name & "\" fso.CreateFolder strDestFolderPath ' Przetwarzaj wszystkie elementy w tym folderze For Each Item In Application.ActiveExplorer.Selection If Item.Attachments.Count > 0 And Item.UserProperties.Item("processed").Value <> 1 Then ' Tu będziemy zapamiętywać indeksy zapisanych załączników, żeby potem wiedzieć ' które usuwać ReDim arAttachIndexes(0) As Integer ' Zapisz wszystkie załączniki For Each attach In Item.Attachments Dim oAttach As Attachment Set oAttach = attach ' (*4) If oAttach.Type = olByValue Or oAttach.Type = olEmbeddeditem Then oAttach.SaveAsFile strDestFolderPath & oAttach.FileName ' Zapamiętaj index załącznika ReDim Preserve arAttachIndexes(UBound(arAttachIndexes) + 1) arAttachIndexes(UBound(arAttachIndexes)) = oAttach.Index End If Next If Not IsEmpty(arAttachIndexes) Then If bDeleteAttach Then ' (*5) Usuń wszystkie zapisane wcześniej załączniki For Index = UBound(arAttachIndexes) To 1 Step -1 Dim att: Set att = Item.Attachments(arAttachIndexes(Index)) att.Delete Next End If End If ' (*6) Oznacz jako przetworzony Item.UserProperties.Add "processed", olNumber Item.UserProperties.Item("processed").Value = 1 Item.Save End If Next End Sub

Wyszukiwanie adresu w listach dystrybucyjnych

Jeśli posiadasz kilka list dystrybucyjnych w Outlook'u, które zawierają dużo kontaktów, to zarządzanie nimi może stać się trudne - zwłaszcza, gdy często zmienia się ich zawartość. Zazwyczaj dosyć dużym problemem jest to, że gdy usuwasz kontakt w Outlook'u, to nie jest on automatycznie usuwany z list dystrybucyjnych.

Poniższe makro wyszukuje we wszystkich listach dystrybucyjnych z bieżącego foldera podany adres e-mail. Po zakończeniu wyszukiwania wyświetla nazwy list, w których został on znaleziony. Dzięki temu możesz szybko sprawdzić wszystkie listy, na jakich znajduje się dany kontakt.

 Sub SearchInDistLists() On Error Resume Next Dim oFolder As MAPIFolder Set oFolder = Application.ActiveExplorer.CurrentFolder ' Zapytaj o adres SMTP do wyszukania Dim strSearchAddress As String strSearchAddress = InputBox("Podaj adres SMTP do wyszukania w listach dystrybucyjnych w tym folderze.") If InStr(strSearchAddress, "@") < 1 Then MsgBox "Błędny adres SMTP" Exit Sub End If Dim strDistListNames As String ' Dla każdego elementu w folderze For Each item In oFolder.Items Dim oDistList As DistListItem Set oDistList = item If Not oDistList Is Nothing Then For nIndex = 1 To oDistList.MemberCount If UCase(oDistList.GetMember(nIndex).Address) = UCase(strSearchAddress) Then strDistListNames = strDistListNames & oDistList.DLName & vbCrLf Exit For ' adres znaleziony End If Next End If Next ' Wyświetl wyniki If strDistListNames <> "" Then MsgBox "Adres '" & strSearchAddress & "' znaleziono w następujących listach dystrybucyjnych:" & _ vbCrLf & vbCrLf & strDistListNames, vbInformation Else MsgBox "Adresu '" & strSearchAddress & "' nie znaleziono na żadnej liście dystrybucyjnej w tym folderze.", vbInformation End If End Sub

Odpowiadanie na wiadomości zawsze w formacie tekstowym

W Microsoft Office Outlook nie ma możliwości skonfigurowania ustawień programu tak, aby przy odpowiadaniu na wiadomość, która jest w formacie zwykłego tekstu lub HTML, odpowiedź tworzona była zawsze w formacie tekstowym. Opcja ta jest znana użytkownikom na przykład programu Outlook Express. Po wybraniu w menu "Narzędzia | Opcje" w ustawieniach programu na zakładce "Wysyłanie" wystarczy odznaczyć opcję "Odpowiedz na wiadomości używając formatu, w jakim zostały wysłane", a odpowiedzi na wiadomości będą tworzone zawsze w formacie zwykłego tekstu lub HTML, w zależności od tego jaka opcja jest wybrana w sekcji "Format wysyłania poczty" (na tej samej zakładce "Wysyłanie").

Tego typu opcji brakuje niestety w Microsoft Outlook, który tworzy odpowiedź zawsze w takim formacie, w jakim jest oryginalna wiadomość. Można co najwyżej w ustawieniach zaznaczyć opcję "Czytaj całą standardową pocztę jako zwykły tekst" ("Narzędzia | Opcje | Opcje e-mail") (opcji tej nie ma w Outlook 2007). Wtedy wszystkie wiadomości, nawet te w formacie HTML, będą przez Outlook'a wyświetlane w formacie zwykłego tekstu i taki też format będą miały odpowiedzi na te wiadomości. Nie jest to jednak rozwiązanie idealne, ponieważ zazwyczaj użytkownik chciałby, aby wiadomości w formacie HTML były wyświetlane jako HTML.

Problem ten można rozwiązać przy użyciu makra, którego kod można znaleźć poniżej. Makro używa zdarzeń Outlook'a w celu wykrycia momentu, gdy użytkownik wywołuje dla wiadomości polecenie "Odpowiedz" (*3). Akcja użytkownika jest wtedy anulowana (*4), a tworzona jest nowa odpowiedź przy użyciu formatu tekstowego (*5). Makro działa w ten sam sposób także dla akcji "Odpowiedz wszystkim" oraz "Prześlij dalej". Jeśli nie ma potrzeby obsługi tych zdarzeń wystarczy usunąć z makra funckje oItem_ReplyAll (*6) oraz oItem_Forward (*7). Jeśli ktoś chce, aby odpowiedzi były zawsze tworzone w formacie HTML zamiast zwykłego tekstu, należy w kodzie makra usunąć linię oznaczoną jako (*1) i odkomentować linię (*2). Makro nie działa w Microsoft Outlook 2000, ponieważ obiekt MailItem nie posiada tam właściwości BodyFormat i nie ma możliwości zmiany formatu wiadomości.

Ponieważ makro używa zdarzeń Outlook'a jego kod musi zostać umieszczony w edytorze Visual Basic w module "ThisOutlookSession". Makro uruchamiane jest już przy starcie Outlook'a. Aby Outlook nie wyświetlał za każdym razem ostrzeżenia o zabezpieczeniach, należy podpisać projekt Visual Basic lub ustawić zabezpieczenia makr na "Niskie".

Option Explicit Private WithEvents oExpl As Explorer Private WithEvents oItem As MailItem Private bDiscardEvents As Boolean Private olFormat As OlBodyFormat Private Sub Application_Startup() Set oExpl = Application.ActiveExplorer bDiscardEvents = False olFormat = olFormatPlain '(*1) - używaj zawsze formatu "zwykły tekst" 'olFormat = olFormatHTML '(*2) - używaj zawsze formatu HTML End Sub Private Sub oExpl_SelectionChange() On Error Resume Next Set oItem = oExpl.Selection.item(1) End Sub ' (*3) Użytkownik wybrał polecenie "Odpowiedz" Private Sub oItem_Reply(ByVal Response As Object, Cancel As Boolean) If bDiscardEvents Or oItem.BodyFormat = olFormat Then Exit Sub End If '(*4) Anuluj domyślną akcję Cancel = True bDiscardEvents = True ' (*5) Utwórz odpowiedź na wiadomość w formacie tekstowym Dim oResponse As MailItem Set oResponse = oItem.Reply oResponse.BodyFormat = olFormat oResponse.Display bDiscardEvents = False End Sub ' (*6) Użytkownik wybrał polecenie "Odpowiedz wszystkim" Private Sub oItem_ReplyAll(ByVal Response As Object, Cancel As Boolean) If bDiscardEvents Or oItem.BodyFormat = olFormat Then Exit Sub End If Cancel = True bDiscardEvents = True Dim oResponse As MailItem Set oResponse = oItem.ReplyAll oResponse.BodyFormat = olFormat oResponse.Display bDiscardEvents = False End Sub ' (*7) Użytkownik wybrał polecenie "Prześlij dalej" Private Sub oItem_Forward(ByVal Forward As Object, Cancel As Boolean) If bDiscardEvents Or oItem.BodyFormat = olFormat Then Exit Sub End If Cancel = True bDiscardEvents = True Dim oResponse As MailItem Set oResponse = oItem.Forward oResponse.BodyFormat = olFormat oResponse.Display bDiscardEvents = False End Sub

Ustawianie pola "Od" w nowych wiadomościach

Wielu użytkowników tworzy w profilu Outlook'a dodatkowe foldery pocztowe w celu porządkowania przychodzących wiadomości. Za umieszczanie wiadomości w odpowiednich folderach odpowiadać mogą reguły Outlook'a. Wiadomości przydzielane mogą być do folderów na podstawie różnych właściwości: adresu nadawcy, słów kluczowych, konta pocztowego, przez które wiadomość została odebrana. Zależy to od sposobu organizacji pracy przez poszczególnych użytkowników czy firmy.

Odpowiadając na wiadomość z danego foldera, często zachodzi konieczność wstawienia w polu "Od" wiadomości wybranego adresu pocztowego, czyli wysłania jej w imieniu innego użytkownika (konta). Przykładowo na rysunku 1 widzimy trzy dodatkowe foldery pocztowe: "info", "support", "zamówienia". Wiadomości umieszczane są w nich na podstawie konta POP3, przez które zostały odebrane. Odpowiadając na wiadomości z foldera "info" użytkownik w polu "Od" chciałby zawsze wstawiać adres "info@outlook.pl", odpowiadając na wiadomości z foldera "support" - adres "support@outlook.pl", a na wiadomości z foldera "zamówienia" - adres "order@outlook.pl".

Rysunek

Jeśli adres SMTP użytkownika wysyłającego wiadomość to "jacek@outlook.pl", a w polu "Od" wiadomości wstawi on adres "order@outlook.pl" i wyśle wiadomość do użytkownika o adresie "jurek@poczta.com.pl", to u odbiorcy wiadomość będzie wyglądała tak jak na rysunku 2.

Rysunek

Na rysunku 1 foldery pocztowe znajdują się w pliku folderów osobistych. Jednak w wielu firmach podobną strukturę (często dużo bardziej rozbudowaną) można spotkać w folderach publicznych serwera Exchange. Tam wiadomości przetwarzane mogą być przez wielu użytkowników. Różne grupy użytkowników odpowiedzialne są za odpowiadanie na wiadomości z określonych folderów. W takim przypadku używanie odpowiedniego adresu w polu "Od" podczas odpowiadania na wiadomość może być szczególnie ważne.

Niestety Outlook nie posiada wbudowanej funkcjonalności umożliwiającej określanie, jaki adres powinien być wstawiany w pole "Od" wiadomości w zależności od tego, w jakim folderze jest ona tworzona. Ograniczona funkcjonalność podobna do tej, którą tu opisuję, istnieje tylko wtedy, gdy pracuje się w środowisku Exchange Server'a i w profilu mamy otwarte udostępnione foldery pocztowe innych użytkowników. W takim wypadku podczas tworzenia nowej wiadomości w udostępnionym folderze, Outlook automatycznie wstawia w pole "Od" nazwę skrzynki użytkownika, w której folder się znajduje. Tu jednak również nie mamy wpływu na wartość, która zostanie domyślnie wstawiona w pole "Od".

Co możemy zrobić, aby móc automatycznie ustawiać wartość pola "Od" w zależności od foldera, w którym nowa wiadomość jest tworzona? Możemy napisać makro takie jak poniższe, które automatycznie ustawia pole "Od", jeśli nowa wiadomość jest tworzona w jednym z folderów "info", "support" lub "zamówienia". Pole "Od" jest ustawiane również wtedy, gdy użytkownik przesyła dalej lub odpowiada na wiadomość znajdującą się w którymś z wymienionych folderów.

' Aby otrzymywać zdarzenia dla obiektów, musimy zadeklarować je ze słowem ' kluczowym WithEvents Private WithEvents oInspectors As Inspectors Private WithEvents oNewInspector As Inspector Private WithEvents oItem As MailItem ' Ta zmienna służy nam do przechowywania informacji, czy tworzona jest nowa wiadomość, ' czy odczytywana istniejąca Private g_bItemRead As Boolean ' Tu przechowujemy adresy odpowiadające poszczególnym folderom Private g_settings Private Sub Application_Startup() Set oInspectors = Application.Inspectors ' (*1) ' (*2) Wypełniamy obiekt z ustawieniami adresów i odpowiadających im folderom Set g_settings = CreateObject("Scripting.Dictionary") g_settings.Add "info", "info@outlook.pl" g_settings.Add "support", "support@outlook.pl" g_settings.Add "Zamówienia", "order@outlook.pl" End Sub ' (*3) Zdarzenie Activate Private Sub oNewInspector_Activate() On Error Resume Next ' (*4) Nie jest tworzona nowa wiadomość, lecz odczytywana istniejąca If g_bItemRead Then Exit Sub ' (*5) Nie obsługujemy Worda If oNewInspector.EditorType = olEditorWord Then Exit Sub Dim oMailItem As MailItem Dim oCurFolder As MAPIFolder Set oCurFolder = Application.ActiveExplorer.CurrentFolder ' (*6) Pobierz adres dla tego foldera Dim strFromAddr As String strFromAddr = g_settings.Item(oCurFolder.Name) If strFromAddr = "" Then Exit Sub ' (*7) Ustaw pole "Od" Set oMailItem = oNewInspector.CurrentItem oMailItem.SentOnBehalfOfName = strFromAddr ' (*8) Odśwież pole "Od" Dim cmdBars As CommandBars Dim cmdBar As CommandBar Dim oMenuItem As CommandBarControl Set cmdBars = oNewInspector.CommandBars Set cmdBar = cmdBars.Item("Menu Bar") Set oMenuItem = cmdBar.FindControl(, 1867, , , True) oMenuItem.Execute oMenuItem.Execute End Sub ' (*9) Zdarzenie NewInspector Private Sub oInspectors_NewInspector(ByVal oInspector As Inspector) On Error Resume Next Set oItem = oInspector.CurrentItem If Not oItem Is Nothing Then ' (*10) ' (*11) Otwierane jest nowe okno dla obiektu typu MailItem Set oNewInspector = oInspector g_bItemRead = False End If End Sub ' (*12) Zdarzenie Read Private Sub oItem_Read() ' Nie jest tworzona nowa wiadomość, lecz odczytywana istniejąca g_bItemRead = True End Sub Private Sub oNewInspector_Close() ' Nie są nam już potrzebne zdarzenia dla tej wiadomości Set oItem = Nothing End Sub 

Kilka słów wyjaśnienia. W powyższym makrze przy tworzeniu nowej wiadomości pocztowej ustawiamy pole "Od", któremu odpowiada właściwość SentOnBehalfOfName obiektu MailItem. Musimy więc przede wszystkim wykryć kiedy tworzona jest nowa wiadomość w Outlook'u. W tym celu wykorzystujemy zdarzenia, które są generowane dla obiektów Outlook API. Wartość pola "Od" musimy zmienić w momencie otwierania okna z nową wiadomością.

W linii (*1) podczas uruchamiania Outlook'a uzyskujemy referencję do kolekcji Inspectors (okna wyświetlające zawartość elementów), aby w linii (*9) obsłużyć zdarzenie o nazwie NewInspector dodawania nowego okna. Tu z kolei uzyskujemy referencję do nowego okna (*11), aby móc obsłużyć zdarzenie jego aktywowania Activate (*3), w którym to musimy ustawić pole "Od".

Adresy, które mają być automatycznie ustawione w polu "Od" i odpowiadające im foldery przechowujemy w obiekcie Dictionary, który wypełniamy przy starcie Outlook'a (*2). W zdarzeniue Activate (*3) pozostaje nam więc pobrać nazwę obecnego foldera, znaleźć w obiekcie Dictionary odpowiadający mu adres SMTP (*6) i wstawić go w polu "Od" (*7).

Po tej operacji adres nie pojawi się jednak jeszcze w polu "Od", tak jak dzieje się to dla innych pól (np. Temat). Dlatego musimy pole "Od" w jakiś sposób odświeżyć. Rozwiązaniem jest tutaj na przykład jego ukrycie i ponowne wyświetlenie (*8). Innym rozwiązaniem mogłoby być wywołanie komendy "Sprawdź nazwy".

Mamy do rozwiązania jeszcze dwa małe problemy. Powinniśmy obsługiwać tylko tworzenie obiektów typu "poczta", nie "zadanie", "kontakt", itp. Dlatego w linii (*10) sprawdzamy czy obiekt powiązany z nowo otwieranym oknem jest typu MailItem. Nie powinniśmy również ustawiać pola "Od", gdy otwierana jest istniejąca wiadomość pocztowa. Dlatego obsługujemy zdarzenie Read dla obiektu oItem (*12), które jest generowane w momencie odczytywania istniejącej wiadomości. Zapamiętujemy ten fakt w zmiennej g_bItemRead i sprawdzamy jej wartość w linii (*4).

Ponieważ w makrze wykorzystujemy zdarzenia, to jego kod musi być umieszczony w module ThisOutlookSession.

Ponieważ makro wykorzystuje zdarzenie Application_Startup, uruchamiane jest przy starcie Outlook'a. Jeśli poziom zabezpieczeń dla makr ustawiony będzie na "średni", to przy każdym starcie Outlook'a wyświetlone zostanie okno z pytaniem, czy zezwolić na uruchamianie makr. Aby się go pozbyć, należy ustawić poziom zabezpieczeń makr na "niski".

Makro nie działa, gdy domyślnym edytorem jest Microsoft Word. Microsoft Word znacznie komplikuje działanie makr i powoduje różnice w działaniu obiektów Outlook'a pod jego różnymi wersjami. Przykładowo w Outlook'u 2000 zdarzenia, które tu wykorzystujemy w ogóle nie są wyzwalane, jeśli Word jest domyślnym edytorem.

Jeśli makro używane jest w profilu, w którym skonfigurowana jest skrzynka Exchange, to należy pamiętać o zasadach obowiązujących wartość pola "Od" w środowisku Exchange. Można wstawić tam tylko nazwę skrzynki, której wysyłający jest delegatem lub ma nadane do niej prawo "SendAs". W przeciwnym wypadku wiadomość nie będzie mogła zostać wysłana.

Autor: Michał Bednarz

Spis treści


Komentarze 6 Masz uwagi do tej strony? Napisz

sebcio-w 2006.12.06 12:57
0 oceń pozytywnie   oceń negatywnie 0
avatar
 
jak te makra uruchomic? tzn. musze je gdzies w outlooku dodawac?-- Nie będę na MTS, a chciałbym :-(
sebcio-w 2006.12.07 11:47
0 oceń pozytywnie   oceń negatywnie 0
avatar
 
ok, juz wiem Tools/Macro-- Nie będę na MTS, a chciałbym :-(
crispol 2006.12.27 9:30
0 oceń pozytywnie   oceń negatywnie 0
avatar
 
hello

potrzebowałbym makro które usuwa zdublowane wiadomości
mam kilka przekierowań i jak odbieram pocztę zdarza się dostaje kilka razy to samo i usuwam maile ręcznie

jak wyglądałby taki makro automat do kasowania dubli ?

pozdrawiam
CriS
m.bednarz 2007.01.04 22:06
0 oceń pozytywnie   oceń negatywnie 0
avatar
 
Tutaj znajdziesz szczegółowy opis dotyczący instalacji i uruchamiania makr w Outlook'u:
http://www.outlook.pl/articles/macros/instalacja_uruchamianie_makro.php

_______________________
Pozdrawiam,
Michał [Microsoft Outlook MVP]
http://www.outlook.pl
Newsletter - artykuły i porady dla Microsoft Outlook i Exchange Server
___________________________________________
Pozdrawiam,
Michał Bednarz
http://www.outlook.pl
C2PublicFolders - publiczne foldery w Outlook'u bez Exchange Server'a
gmach 2007.01.25 21:45
0 oceń pozytywnie   oceń negatywnie 0
avatar
 
UWAGA - makro do automatycznego tworzenia kontaktów z zaznaczonych wiadomości kasuje datę otrzymania, datę wysłania itd... nie radzę odpalać tego makra - no chyba, że wam nie zależy na tych informacjach ....
szomiz 2007.04.09 9:14
0 oceń pozytywnie   oceń negatywnie 0
avatar
 
Niekoniecznie wszystkich ze wszystkimi.

Wystarczy posortowana lista:
<message-id>;<lokalny_id>
I jeden przelot po niej sprawdzający czy bieżący zaczyna się tak jak poprzedni przed średnikiem.

A-cha i i lista jak napisałem, żadne struktury. Nieco więcej zasobów zje pętla, ale zdecydowanie mniej sortowanie (bo pójdzie natywnym).

sz. & Draco - byrneński pies pasterski
http://szomiz.republika.pl/dod/draco/
-- --- -- --- -- --- sz. & Draco - byrneński pies pasterski http://szomiz.republika.pl/dod/draco/

Dodaj komentarz

avatar

Zaloguj się lub Zarejestruj się aby wykonać tę czynność.

Autor Michał Bednarz
avatar
 

Współpracuję z firmą informatyczną CodeTwo http://www.outlook.pl specjalizującą się w tworzeniu oprogramowania i rozwiązań bazujących na platformie Exchange oraz rozwiązań zarządzających ruchem e-mail, przydzielaniem zasobów oraz procesami workflow. Tematem Exchange Server’a i Microsoft Outlook’a zajmujemy się od 1997 roku. Ostatnio implementujemy również oprogramowanie do komunikacji internetowej dla urządzeń PDA. Pomagam rozwiązywać problemy związane z MS Outlook i Exchange na f

Załóż konto
WSS to serwis, który łączy dziesiątki tysięcy specjalistów IT w Polsce, zajmujących się szeroko pojętymi technologiami Microsoft. Portal działa od 2003 roku, i oprócz setek publikacji technicznych, rozwijającego się forum - portal to ludzie, którzy go tworzą. To właśnie z myślą o nich warto codziennie nas odwiedzać.

Dowiedz się więcej o WSS

vGuru - Zostań Guru Wirtualizacji

 

MetroOne

Idź na górę strony