Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

VBA - Rozsyłanie maili z plikami arkuszy odpowiednio

Prudens 18 Sep 2015 08:33 1131 16
  • #1
    Prudens
    Level 8  
    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(malpa)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.
  • #2
    Icen
    Level 12  
    wybacz ale troszkę nie chce mi się przesiadać na VBA a cały program w C# który rozwiąże twój problem to:
    Code: csharp
    Log in, to see the code


    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
    Prudens
    Level 8  
    Icen wrote:
    wybacz ale troszkę nie chce mi się przesiadać na VBA a cały program w C# który rozwiąże twój problem to:
    Code: csharp
    Log in, to see the code


    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.
  • Helpful post
    #4
    Icen
    Level 12  
    opcje są dwie:
    1) wpisanie adresów bezpośrednio w kod w ten sposób:
    Code: csharp
    Log in, to see the code

    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
    Code:
    filename1;email addres @ 1
    
    filename2;email addres @ 2
    filename3;email addres @ 3
    filename4;email addres @ 4

    wtedy trzeba będzie dodać coś takiego
    Code: csharp
    Log in, to see the code

    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
    Prudens
    Level 8  
    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
    Icen
    Level 12  
    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
    Prudens
    Level 8  
    Ok. Rozumiem. A ten visual studio 2015 comunity nie pójdzie na XP-ku?

    Bo ściągnąłem i nie odpala.
  • #8
    Icen
    Level 12  
    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
    Prudens
    Level 8  
    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ć?
  • #10
    Icen
    Level 12  
    tak

    musisz sobie stworzyć coś co się będzie nazywać console application
    i odpalasz za pomocą F5 lub ctrl+F5 lub zielony play
  • #13
    Prudens
    Level 8  
    marcinj12 wrote:
    Może coś takiego?
    Code: vbscript
    Log in, to see the code


    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
    marcinj12
    Level 40  
    Prudens wrote:
    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 wrote:
    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
    Prudens
    Level 8  
    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?
  • Helpful post
    #16
    marcinj12
    Level 40  
    Prudens wrote:
    Czy można zrobić tak, by on sam wybrał WYŚLIJ?
    Przeczytaj komentarz w kodzie i wybierz jedną z 2 opcji:
    Code: vbscript
    Log in, to see the code
  • #17
    Prudens
    Level 8  
    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ę.