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

VBA - Rozsyłanie maili z plikami arkuszy odpowiednio

Prudens 18 Wrz 2015 08:33 1452 16
REKLAMA
  • #1 15002356
    Prudens
    Poziom 9  
    Posty: 42
    Witam,

    Potrzebuję pomocy.

    Mam skoroszyt w Excelu, a w nim ok. 40 arkuszy. Każdy arkusz osobno nosi nazwę "Nazwisko Pierwsza litera imienia.". Mam skrypcik, który za pomocą kliknięcia przycisku "Zapisz pliki" zapisuje mi wszystkie arkusze w jeden folder o nazwie takiej jak nazwa pliku skoroszytu oraz w tej samej lokalizacji co skoroszyt.

    Skonfiguruję pocztę Outlook.

    Chciałbym, aby kolejny skrypcik wysyłał mi maile do tych wszystkich osób o tej samej treści, a w załączniku umieszczał plik z tym odrębnie zapisanym arkuszem. Mogłby być to nawet jeden skrypt, by po wciśnięciu przycisku w Excelu "Zapisz i wyślij", on startował z Outlookiem / zapisywał i wysyłał na określone maile. Maile mogę wpisać w kodzie skryptu, lub żeby sam szukał (adres e-maila osoby do której ma wysłać jest imie.nazwisko(_at_)domena.eu , więc może po nazwie arkusza zidentyfikować, który to adres e-mail.). Mogę więc adresy e-mail wklepać w kolejnym arkuszu, który będzie przeszukiwał, np. kolumnę A. i 50 wierszy...

    Wiem, że jest trochę wyjaśnień jak to zrobić, ale nie wiem jak to zastosować.

    Może ktoś mi coś takiego skrobnąć w zarysie?

    Bardzo proszę o pomoc, bo rozsyłanie tego na piechotkę trochę mi zajmuje...

    Pozdrawiam.
  • REKLAMA
  • #2 15004117
    Icen
    Poziom 12  
    Posty: 56
    Pomógł: 7
    Ocena: 1
    wybacz ale troszkę nie chce mi się przesiadać na VBA a cały program w C# który rozwiąże twój problem to:
    Kod: C#
    Zaloguj się, aby zobaczyć kod


    podmień sobie ustawienia i odpalasz go jako normalną aplikację a jako parametr ścieżkę do folderu z plikami excela

    oczywiście musisz sobie zrobić jakąś logikę dobierania adresów ale czy to będzie wyszukiwanie w bazie czy zakodowany słownik w stylu nazwa pliku - adres email to już inna bajka.

    No i oczywiście żeby to otworzyć potrzebujesz visual studio 2015 comunity edition czyli tego darmowego :D
  • #3 15009481
    Prudens
    Poziom 9  
    Posty: 42
    Icen napisał:
    wybacz ale troszkę nie chce mi się przesiadać na VBA a cały program w C# który rozwiąże twój problem to:
    Kod: C#
    Zaloguj się, aby zobaczyć kod


    podmień sobie ustawienia i odpalasz go jako normalną aplikację a jako parametr ścieżkę do folderu z plikami excela

    oczywiście musisz sobie zrobić jakąś logikę dobierania adresów ale czy to będzie wyszukiwanie w bazie czy zakodowany słownik w stylu nazwa pliku - adres email to już inna bajka.

    No i oczywiście żeby to otworzyć potrzebujesz visual studio 2015 comunity edition czyli tego darmowego :D


    Witam,

    Dziękuję za pomoc, ale jak mogę tutaj wskazać bazę danych z adresami e-mail? Na przykład stworzę nowy arkusz excel. Wypiszę w kolumnie A imię i nazwisko, w B - adres e-mail. Program powinien odszukać po nazwisku w nazwie pliku (wcześniej zapisanego arkusza) odpowiednią osobę i nadać na jej adres e-mail.

    Proszę o pomoc.
  • REKLAMA
  • Pomocny post
    #4 15009525
    Icen
    Poziom 12  
    Posty: 56
    Pomógł: 7
    Ocena: 1
    opcje są dwie:
    1) wpisanie adresów bezpośrednio w kod w ten sposób:
    Kod: C#
    Zaloguj się, aby zobaczyć kod

    rozwiązanie jest mega proste i łatwe w obsłudze ma tylko jedną wadę dodanie nowego adresy będzie się wiązać z przebudową programu
    2) zbudowanie tego słownika w pliku csv czyli rozdzielanym średnikami
    filename1;email addres @ 1
    filename2;email addres @ 2
    filename3;email addres @ 3
    filename4;email addres @ 4

    wtedy trzeba będzie dodać coś takiego
    Kod: C#
    Zaloguj się, aby zobaczyć kod

    no i oczywiście odpalać program z dwoma parametrami gdzie pierwszym jest ścieżka do folderu a drugim ścieżka do pliku z mapami.

    Pamiętaj proszę, że pisałem to z palca i o ile założenia są słuszne kod może najzwyczajniej w świecie zawierać błędy.
  • #5 15009535
    Prudens
    Poziom 9  
    Posty: 42
    Ok. Dzięki.

    A nie da rady zrobić coś takiego, by program sam wyszukiwał sprawdzając nazwę pliku i szukał później nazwiska, przyporządkując mu ten adres który tam wpisałem?

    Na razie spróbuję na przykładzie jednego pliku i adresu i zobaczymy.
  • #6 15009540
    Icen
    Poziom 12  
    Posty: 56
    Pomógł: 7
    Ocena: 1
    wszystko da rade ale to kwestia czasu poświęconego na kodzenie

    pokazane przeze mnie rozwiązania to są takie na które teraz mogę sobie pozwolić
  • #7 15009543
    Prudens
    Poziom 9  
    Posty: 42
    Ok. Rozumiem. A ten visual studio 2015 comunity nie pójdzie na XP-ku?

    Bo ściągnąłem i nie odpala.
  • #8 15009550
    Icen
    Poziom 12  
    Posty: 56
    Pomógł: 7
    Ocena: 1
    uu nie wspomniałeś o takim archaizmie. Przypominam że MS zwiesił wsparcie XP jakieś dwa lata temu.

    nie raczej nie odpali się to jest najnowsza wersja. Możesz pobrać sobie starszego VS express powiedzmy 2010 to się odpali na XP

    z ciekawszych rzeczy to możesz na przykład zapisać sobie email w nazwie pliku i w trakcie wysyłania z stamtąd go wyciągnąć i zmienić nazwę pliku przy wysyłaniu.

    po prostu bardzo odradzam grzebanie w plikach excela z poziomu c#
  • #9 15009556
    Prudens
    Poziom 9  
    Posty: 42
    Nie no spoko. Po prostu sobie wklepię za pierwszym razem do kodu całą bazę maila - ok. 40. Nazwa pliku jest zawsze taka sama, więc adres e-mail będzie też statyczny.

    Najpierw spróbuję na jednym i zobaczymy czy pójdzie.

    Rozumiem, że mam ten kodzik wkleić do nowego projektu w VS2015?

    Dodano po 5 [minuty]:

    Lub innego VS? np 2010? I tam skompilować?
  • REKLAMA
  • #10 15009591
    Icen
    Poziom 12  
    Posty: 56
    Pomógł: 7
    Ocena: 1
    tak

    musisz sobie stworzyć coś co się będzie nazywać console application
    i odpalasz za pomocą F5 lub ctrl+F5 lub zielony play
  • #12 15009677
    marcinj12
    Poziom 40  
    Posty: 3404
    Pomógł: 1024
    Ocena: 250
    Może coś takiego?
    Kod: VBScript
    Zaloguj się, aby zobaczyć kod
    Załączniki:
    • Maile_z_za____cznikami.zip (19.49 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • #13 15009740
    Prudens
    Poziom 9  
    Posty: 42
    marcinj12 napisał:
    Może coś takiego?
    Kod: VBScript
    Zaloguj się, aby zobaczyć kod


    Pięknie super sprawa, o coś takiego chodzi!

    Tylko potrzebuję mieć formularz adresów e-mail na ok. 50 wierszy.

    Możesz mi to zmienić? Bo rozumiem, że nie wystarczy tylko powiększenie tabeli ale trzeba grzebnąć w kodzie...

    Ale jeśli to zadziała, to super, o to chodzi.

    A nie można z pominięciem Outlooka to zrobić? Tak jak w kodziku C# powyżej?
  • #14 15009789
    marcinj12
    Poziom 40  
    Posty: 3404
    Pomógł: 1024
    Ocena: 250
    Prudens napisał:
    Możesz mi to zmienić? Bo rozumiem, że nie wystarczy tylko powiększenie tabeli ale trzeba grzebnąć w kodzie...
    Możesz rozszerzyć tabelę z adresami bez grzebania w kodzie... Nie ma limitu wierszy.
    Prudens napisał:
    A nie można z pominięciem Outlooka to zrobić?
    Nie w tym kodzie, co podałem. Za to jest ten plus, że przynajmniej widzisz w "wysłanych" co zostało faktycznie wysłane...
  • #15 15009831
    Prudens
    Poziom 9  
    Posty: 42
    Bardzo dziękuję,

    Jest malutki problemik - za każdym razem muszę kliknąć w nowym formularzu nowego maila (Outlook) WYŚLIJ. Jak wysyłam do 50 osób, to muszę każdy formularz odklikiwać.

    Czy można zrobić tak, by on sam wybrał WYŚLIJ?
  • Pomocny post
    #16 15009902
    marcinj12
    Poziom 40  
    Posty: 3404
    Pomógł: 1024
    Ocena: 250
    Prudens napisał:
    Czy można zrobić tak, by on sam wybrał WYŚLIJ?
    Przeczytaj komentarz w kodzie i wybierz jedną z 2 opcji:
    Kod: VBScript
    Zaloguj się, aby zobaczyć kod
  • #17 15009904
    Prudens
    Poziom 9  
    Posty: 42
    A metodą ".Send" obiektu Ms Outlook można? Bo to jest rozumiem metoda "mailto"? I dlatego klikanie wyślij?

    Dodano po 4 [minuty]:

    Ale jak to wyedytować w pliku który dołączyłeś? W makrach nic nie widzę...

    Dodano po 23 [minuty]:

    Ok. Już działa. Zrobiłem. Świetnie. Na razie wysłałem 2-3 maile. Jeszcze zobacze jak na raz wyślę 50, jak będzie śmigać. J


    Bardzo dziękuję.

Podsumowanie tematu

✨ Użytkownik poszukuje pomocy w stworzeniu skryptu VBA do automatycznego wysyłania e-maili z załączonymi plikami arkuszy Excela. Skrypt ma zapisywać arkusze w folderze i wysyłać je do osób, których adresy e-mail są powiązane z nazwiskami w nazwach arkuszy. W odpowiedziach zaproponowano różne podejścia, w tym użycie C# do wysyłania e-maili oraz VBA do automatyzacji procesu w Outlooku. Użytkownik dopytuje o możliwość dynamicznego przyporządkowania adresów e-mail na podstawie nazwisk oraz o eliminację konieczności ręcznego klikania "Wyślij" w Outlooku, co zostało rozwiązane przez zastosowanie metody ".Send".
Wygenerowane przez model językowy.
REKLAMA