• breakwater
    DEFINITION: (noun) A protective structure of stone or concrete; extends from shore into the water to prevent a beach from washing away. SYNONYMS: jetty, seawall, bulwark, groin, mole. USAGE: The clamor of Benares, oldest of all earth's cities awake before the Gods, day and night, beat round the walls as the sea's roar round a breakwater. Discuss […]
September 2010
M T W T F S S
« Aug    
 12345
6789101112
13141516171819
20212223242526
27282930  

korespondencja seryjna z załącznikami

Korespondencja seryjna to często niedoceniane narzędzie w Ms Word. Jednak  projektanci interfejsu Office’a 2007 słusznie poświęcili jej całą kartę wstążki. Przydaje się nie tylko do tworzenia podobnych dokumentów “z szablonu” ale również – na co wskazuje sama nazwa do seryjnego wysyłania maili.

Głównym mankamentem tego mechanizmu jest brak obsługi załączników. W internecie roi się od narzekań na ten problem a najczęściej cytowanym rozwiązaniem jest artykuł Douga Robbinsa ze strony Microsoft Most Valuable Professional http://word.mvps.org/faqs/mailmerge/MergeWithAttachments.htm, na którym opiera się poniższy post.

Tekst Douga zakłada, że czytelnik wie jak zrobić “zwykłą” korespondencję seryjną – ja nieco rozszerzam temat nie robiąc takiego założenia.

Mimo że Doug pisze, że jego skrypt zadziała na wersjach Office od 97 do 2007 (i ma rację), to pomija jeden szczegół. Przy korespondencji seryjnej Outlook prosi o potwierdzenie użytkownika przed wysłaniem każdego (z np. 1000) maili, Doug sugeruje instalację darmowego programu ”Express ClickYes” http://www.contextmagic.com/express-clickyes/ jednak według strony producenta do działania z Office 2007 potrzebujemy już wersji płatnej. To jednak nie powinien być problem, ponieważ niewygodnego pytania Outlook nie zada jeśli domyślnym typem wysyłanych wiadomości jest HTML.

Dużym plusem (przynajmniej dla mnie) tego rozwiązania jest to, że Outlook nie musi być domyślnym klientem poczty – wystarczy aby był zainstalowany. Skrypt Douga pozwala na dołączanie wielu załączników do każdej wiadomości, a nawet dołączanie różnych załączników dla różnych odbiorców.

Makro

Aby wszystko zadziałało, w Edytorze Visual Basica (alt+F11 lub karta Deweloper) należy ustawić odniesienie do Microsoft Outlook Object Library.

Edytor nie jest tłumaczony, więc klikamy na Tools>References w górnym menu i z długiej listy komponentów wybieramy  Microsoft Outlook 12 Object Library (12 to numer właściwy wersji 2007).

Tu również trzeba będzie później dodać makro (w oknie This document konkretnego pliku (Projektu) lub szablonu)

Cztery pliki i wysyłka

1

Do korespondencji z załącznikami będziemy potrzebowali (jak zwykle) źródła danych (np. arkusza Excela) w którym umieszczone będą w jednej z kolumn wszystkie adresy e-mail odbiorców a każdy wiersz zawiera dane na temat tego właśnie odbiorcy, które możemy wstawić w tekst wysyłanego maila – w tym samym pliku możemy również podać ścieżkę do pliku załącznika, który chcemy wysłać.

Ponieważ błąd w tym ostatnim może nas kosztować w najgorszym przypadku wysyłanie maili (stu – tysiąca) bez załączników w najlepszym konieczność powtarzania procedury od początku warto sobie ułatwić życie i skopiować załączniki do głównego katalogu jednego z dysków – tak aby były widoczne od razu po kliknięciu na ikonę dysku w oknie Mój Komputer – wtedy dla dysku C i pliku Raport.pdf ścieżką będzie C:\Raport.pdf

2

Poza tym potrzebny nam będzie również dodatkowy dokument Worda (katalog korespondencji), w którym umieścimy dane o tym jaki załącznik (i do kogo) chcemy wysłać.

1

W katalogu wstawiamy jednowierszową tablekę z 2 lub więcej kolumn i wybieramy nasze – przygotowane już źródło danych.

W pierwszej kolumnie umieszczamy pole korespondencji seryjnej zawierające adres e-mail, w drugiej (i ew. kolejnych) pola zawierające ścieżki dostępu do załączników.

Powinno to wyglądać mniej więcej tak

<<AdresEmail>>

<<Zalacznik1>>

<<Zalacznik2>>

W prostszych przypadkach – np. gdy wysyłamy takie same załączniki do wszystkich wystarczy wpisać ścieżkę właśnie w tej tablce – np. tak

<<AdresEmail>>

C:\Raport.pdf

Możemy również stosować kombinację obu metod i wysłać Raport do wszystkich jako pierwszy załącznik, ale drugi pobrać już ze źródła danych:

<<AdresEmail>>

C:\Raport.pdf

<<Zalacznik2>>

3

Przygotowany w ten sposób dokument należy scalić korzystając z opcji Edytuj poszczególne dokumenty (Alt+Shift+N). Word stworzy automatycznie nowy plik w którym – o ile wszystko poszło dobrze zobaczymy naszą tabelkę (tyle wierszy ilu mamy odbiorców) wypełnioną danymi. Plik należy zapisać np. jako “katalog korespondencji”  i zapamiętać miejsce – za moment będziemy musieli go otworzyć.

4

Następnie – w nowym dokumencie Worda przygotowujemy treść korespondencji seryjnej – wpisujemy wspólne części maili, a treść personalizowaną wstawiamy ze źródła danych. Ponownie scalamy korzystając z opcji Edytuj poszczególne dokumenty i do uzyskanego pliku dodajemy makro.

Kiedy wszystko jest już gotowe  uruchamiamy nasze makro (Alt+F8), wskazujemy i otwieramy nasz “katalog korespondencji”, w kolejnym okienku wpisujemy jeszcze temat wspólny dla wszystkich wiadomości.

Za pierwszym razem (albo każdym kolejnym) warto zadbać o to, aby mieć możliwość przejrzenia maili przed wysłaniem – już w Outlooku – dla tego warto wyłączyć (wcześniej!) automatyczne wysyłanie wiadomości z domyślnego konta, lub po prostu rozłączyć się z Internetem i dopiero po upewnieniu się, że wszystko jest dokładnie tak jak chcemy, kliknąć w Outlooku “Wyślij”.

simple VBA is good because it's good and simple

Od pewnego czasu nie daje mi spokoju fakt, że nie umiem korzystać z VBA. Czasem coś prostego sobie napiszę, częściej nagram jakieś makro i później usunę połowę żeby jako-tako działało, ale nie spędzam aż tyle czasu na powtarzalnym klikaniu po excelu czy wordzie, żeby mi się chciało coś z tym zrobić.

Za to EK przeżyła traumę widząc po raz kolejny jak drukarka wypluwa po 3 strony na raport lektora tylko dlatego, że znowu “obróciła się” orientacja strony. Same kłopoty z tą orientacją.

Mamy skoroszyt z kilkoma arkuszami (dla niektórych lektorów będzie to raczej kilkanaście) – po jednym na grupę i na końcu 2 podliczające wcześniej wpisywane dane. Plik krąży sobie mailowo* pomiędzy lektorem a szkołą i po każdych zajęciach jest uzupełniany o nowe dane. Magicznie coś od czasu do czasu się przestawia i zamiast ładnie drukować się na landscape’owo ustawionej A4 – raport wychodzi w kawałkach.

Fuj.

Przy okazji doczytywania o VBA skleciłem takie coś

Sub WorksheetTheRightOrientationForcedLoop()
Dim Worksheet_Count As Integer
Dim I As Integer
Dim answer As Variant
Worksheet_Count = ActiveWorkbook.Worksheets.Count
czyli definiujemy: Worksheet_Count czyli numer Arkusza i I – powtórzenie i answer/odpowiedź – jako wariant (pytać będziemy tak/nie
Pętlą powtarzamy całość dla każdego arkusza z kolei, za każdym razem pytając czy uczestnik chce go zmienić czy nie (niektórzy lektorzy mają arkusze zliczające gdzieś pomiędzy “raportami”.
For I = 1 To Worksheet_Count
answer = MsgBox(ActiveWorkbook.Worksheets(I).Name, vbQuestion + vbYesNo, "Should I change")
If answer = vbYes Then
With ActiveSheet.PageSetup
.PrintTitleRows = ""
.PrintTitleColumns = ""
End With
ActiveSheet.PageSetup.PrintArea = ""
With ActiveSheet.PageSetup
.Orientation = xlLandscape
End With
Range("A1:K29").Select
ActiveSheet.PageSetup.PrintArea = "$A$1:$K$29"
ustawiamy orientację i dla pewności jeszcze obszar wydruku “na sztywno”.
ElseIf answer = vbNo Then
End If
Next I
End Sub
i kończymy pętlę
i idziemy do domu
i nawet działa :)

*dla niektórych lektorów – tych których nie przeraża odrobina techniki plik wisi sobie na google docs.

Welcome (pack) to personalization

2008-11-21 Dystrybucja Welcome Packów – noszenie i mailingi

Człowiek uczy się przez całe życie. Do czego służy pole (blind) carbon copy (cc/bcc)? Otóż do tego, żeby wysyłać maile do dużej grupy osób. A co się wpisuje w pole To:? Swój własny adres oczywiście.

A co z tym robi Spam Assassin?

Wycina w cho***ę. A jak nie spam assasin to sami userzy bo to przecież nie do nich.
Zresztą nie mam się co zżymać na koleżankę koordynator, bo ludzi jest 1ooo (ten 1ooo) i trzeba ich rozdystrybuować między kilkanaście spotkań inicjujących szkolenia. Dlatego AW trzeba było nauczyć korzystania z korespondencji seryjnej opartej na excelowej liście adresatów (Accessa u nas nadal nie ma a OpenOfficem nie będę zawracał nikomu głowy – na razie)

AW przyswoiła, przetestowała, wysłała (odestek błędów na poziomie 2% – nie jest  źle – a to i tak wyłącznie dlatego że baza danych była średnio aktualna)

Za to ludzie dostali informacje na swoje adresy, pisane do siebie, i z jedną – właściwą godziną i miejscem spotkania zamiast tabelki na trzy i pół strony.

Co innego z Welcome Packami. Każdy uczestnik dostaje “w gratisie” torbę, segregator i słuchawki. W segregatorze, komplet informacji personalizowanych pod kątem poziomu (5 różnych), formy zajęć (3) i płci (surprise, suprsie – 2) co łącznie daje 30 typów WP. Wysyłanych do kilkunastu różnych lokalizacji. Mamy 1 pokój i 2 korytarze  zastawione pryzmami kartek i gotowymi do nadania kartonami.

Zawsze lubiłem układanki