logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Excel VBA - Jak wysłać maile do wielu adresów z kolumny A?

tok13 17 Cze 2013 08:36 4920 14
REKLAMA
  • #1 12424509
    tok13
    Poziom 12  
    Posty: 144
    Ocena: 15
    Stworzyłem procedurę która wysyła na adresy zawarte w excelu w kolumnie A maile z outlooka i wszystko działa tylko dla jednej komórki .to=range("a1"), nie wiem jak zrobić żeby działał na wszystkie niepuste komórki z kolumny A czy ktoś ma jakiś pomysł? I jeszcze jeden problem... z VBA jestem zielony jak trawka na wiosnę, to moja druga procedura w życiu...proszę o wyrozumiałość
  • REKLAMA
  • #2 12424658
    cbrman
    Poziom 27  
    Posty: 441
    Pomógł: 177
    Ocena: 61
    Zastosuj pętlę, np: for/next
    Kod: text
    Zaloguj się, aby zobaczyć kod
  • #3 12424727
    tok13
    Poziom 12  
    Posty: 144
    Ocena: 15
    Chyba właśnie o to chodziło, tylko w które miejsce mam to wkleić żeby działało?
    Kod: text
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #4 12427132
    tok13
    Poziom 12  
    Posty: 144
    Ocena: 15
    Jak podstawie do pętli to wysyła mi do każdego adresata osobną wiadomość a nie jedną zbiorczą, natomiast jak zrobić żeby wynikiem tej pętli była zmienna adresy z mailami oddzielonymi średnikami?
  • Pomocny post
    #5 12427609
    cbrman
    Poziom 27  
    Posty: 441
    Pomógł: 177
    Ocena: 61
    tok13 napisał:
    a nie jedną zbiorczą, natomiast jak zrobić żeby wynikiem tej petki była zmienna adresy z mailami oddzielonymi średnikami?


    To trzeba było tak od razu pisać.
    Jak ma być jedna zbiorcza wiadomość to wystarczy poniższy kod. Przykład dla adresów wpisanych w kolumnie A.
    Kod funkcji (Private Function...) możesz sobie skopiować na sam koniec Twojego modułu pod główną procedurą (pod End Sub).
    Kod: text
    Zaloguj się, aby zobaczyć kod
  • #6 12428476
    tok13
    Poziom 12  
    Posty: 144
    Ocena: 15
    Bardzo bardzo dziękuję o to chodziło....
    I nawet działa
  • #7 12429555
    tok13
    Poziom 12  
    Posty: 144
    Ocena: 15
    niestety pojawił sie kolejny mały problem
    otóż gdy wyfiltruje kolumnę to maile wysyła do tych wyfiltrowanych oraz niestety to tych którzy są przed osobą będącą kryterium filtru
    czyli jeżeli filtruje po nazwisku i filtruje np nazwiko kowalski, to wysyła do wszystkich kowalskich oraz do wszysstkich osób które znajduja sie przed kowalskimi
  • REKLAMA
  • #8 12433096
    cbrman
    Poziom 27  
    Posty: 441
    Pomógł: 177
    Ocena: 61
    Tym razem jednak rozwiązanie z pętlą:
    Kod: text
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #9 12434480
    tok13
    Poziom 12  
    Posty: 144
    Ocena: 15
    I znowu nie pozostaje mi nić innego tylko serdecznie podziękować i przychylić czoła przed mistrzem, bardzo dziękuje strzał w dziesiątkę o to chodziło.
    jest tylko jeszcze jeden mam nadzieję że ostatni problemik, otóż otwiera się okno nowej wiadomości, wpisują się adresy oddzielone średnikami, oczywiście temat i treść, można to od razu wysłać ale nie wysyła się tylko wskakuje do skrzynki nadawczej bo nie jest otwarty cały outlook , jak zrobić żeby otwierało się nie tylko okno nowej wiadomości ale również outlook jako aplikacja?
  • #10 12435180
    adamas_nt
    VIP Zasłużony dla elektroda
    Posty: 5320
    Pomógł: 1508
    Ocena: 659
    Jeśli masz referencje do Outlook'a, to odwołaj się do obiektu / CreateObject("Outlook.Application")

    Edit: Widzę, że masz :) nie doczytałem. Ustaw
    oApp.Visible= True.

    P.S. Obiekt oEmail ma własność Send, więc możesz wysłać z poziomu Excela...
  • #11 13397779
    jarazz
    Poziom 10  
    Posty: 11
    cbrman napisał:
    Tym razem jednak rozwiązanie z pętlą:
    Kod: text
    Zaloguj się, aby zobaczyć kod


    Witam, jeśli można podepnę się pod temat i skorzystam z wiedzy mistrza.
    Wykorzystałem sposób z pętlą, ale okazuje się że mogę wysłać maila do max 25 odbiorców, takie ograniczenie serwera.
    potrafię policzyć ile jest adresów na posortowanej liście
    ileAdresow = Application.CountA(ws.Columns("E").SpecialCells(xlCellTypeVisible)) - 1
    ale nie mam pomysłu co dalej, aby skrypt dzielił je na grupy po 25 i generował kolejną wiadomość jeśli liczba kontaktów przekroczy 25 i kolejną do następnych 25-ciu

    Proszę o pomoc
  • #12 13397986
    JRV
    Specjalista - VBA, Excel
    Posty: 2724
    Pomógł: 805
    Ocena: 455
    Witaj
    fragment:
    Kod: text
    Zaloguj się, aby zobaczyć kod
  • #13 13398738
    jarazz
    Poziom 10  
    Posty: 11
    JRV napisał:
    Witaj
    fragment:
    Kod: text
    Zaloguj się, aby zobaczyć kod


    Wielkie dzięki kolego, troszkę musiałem pokombinować, bo na początku pętla liczyła do 25 i wysyłała, a jak zostało mniej niż 25, to już nie.
    Okazało się, że dodanie poniżej pętli tego fragmentu odpowiedzialnego za wysyłkę rozwiązało problem. W całości wygląda to tak :
    Kod: text
    Zaloguj się, aby zobaczyć kod
  • #14 13400061
    JRV
    Specjalista - VBA, Excel
    Posty: 2724
    Pomógł: 805
    Ocena: 455
    Dla zmniejszenia kodu wyzwanie Outlook zrobić oddzielne procedury i przekazać parametr 'adresy'
  • #15 13416438
    jarazz
    Poziom 10  
    Posty: 11
    JRV napisał:
    Dla zmniejszenia kodu wyzwanie Outlook zrobić oddzielne procedury i przekazać parametr 'adresy'


    Pokombinowałem, oddzieliłem procedurę wysyłania i wyszło mi coś takiego :

    Kod: text
    Zaloguj się, aby zobaczyć kod

Podsumowanie tematu

LABEL_AI_GENERATED
Użytkownik stworzył procedurę w VBA do wysyłania e-maili z Outlooka na adresy zawarte w kolumnie A arkusza Excel, jednak początkowo działała tylko dla jednej komórki. Odpowiedzi sugerowały użycie pętli do iteracji przez wszystkie niepuste komórki w kolumnie A. Użytkownik chciał również, aby adresy były oddzielone średnikami w jednej wiadomości e-mail. Ostatecznie, po kilku poprawkach, udało się zrealizować wysyłkę zbiorczą, a także rozwiązać problem z filtrowaniem, aby wysyłać e-maile tylko do widocznych adresatów. Dodatkowo, poruszono kwestię otwierania aplikacji Outlook oraz wysyłania wiadomości, co wymagało ustawienia widoczności obiektu aplikacji. W końcu, użytkownik zadał pytanie o ograniczenie liczby odbiorców do 25, co wymagało podziału adresów na grupy.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA