Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

EXCEL - Excel VBA wstawianie zakresu komórek

tok13 17 Cze 2013 08:36 3597 14
  • #1 17 Cze 2013 08:36
    tok13
    Poziom 12  

    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ść

    0 14
  • #2 17 Cze 2013 10:10
    cbrman
    Poziom 27  

    Zastosuj pętlę, np: for/next

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    0
  • #3 17 Cze 2013 10:40
    tok13
    Poziom 12  

    Chyba właśnie o to chodziło, tylko w które miejsce mam to wkleić żeby działało?

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    0
  • #4 17 Cze 2013 20:37
    tok13
    Poziom 12  

    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?

    0
  • Pomocny post
    #5 17 Cze 2013 21:58
    cbrman
    Poziom 27  

    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: vb
    Zaloguj się, aby zobaczyć kod

    0
  • #6 18 Cze 2013 08:10
    tok13
    Poziom 12  

    Bardzo bardzo dziękuję o to chodziło....
    I nawet działa

    0
  • #7 18 Cze 2013 14:59
    tok13
    Poziom 12  

    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

    0
  • #8 19 Cze 2013 12:44
    cbrman
    Poziom 27  

    Tym razem jednak rozwiązanie z pętlą:

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    0
  • #9 19 Cze 2013 17:57
    tok13
    Poziom 12  

    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?

    0
  • #10 19 Cze 2013 20:38
    adamas_nt
    Moderator Programowanie

    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...

    0
  • #11 12 Mar 2014 21:32
    jarazz
    Poziom 9  

    cbrman napisał:
    Tym razem jednak rozwiązanie z pętlą:
    Kod: vb
    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

    0
  • #12 12 Mar 2014 22:17
    JRV
    Specjalista - VBA, Excel

    Witaj
    fragment:

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    0
  • #13 13 Mar 2014 09:30
    jarazz
    Poziom 9  

    JRV napisał:
    Witaj
    fragment:
    Kod: vb
    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: vb
    Zaloguj się, aby zobaczyć kod

    0
  • #14 13 Mar 2014 17:57
    JRV
    Specjalista - VBA, Excel

    Dla zmniejszenia kodu wyzwanie Outlook zrobić oddzielne procedury i przekazać parametr 'adresy'

    0
  • #15 18 Mar 2014 08:59
    jarazz
    Poziom 9  

    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: vb
    Zaloguj się, aby zobaczyć kod

    0