Wysłanie wiadomości email z Excela. Praktycznie o programowaniu w VBA

Поділитися
Вставка
  • Опубліковано 23 сер 2024
  • Wysłanie wiadomości email z Excela. Praktycznie o programowaniu w VBA.
    W tym filmie zobaczysz jak włączyć możliwość korzystania z bibliotek Outlooka w Excelu. Wywołamy sobie klienta poczty, napiszemy maila i oczywiście wyślemy.
    Wpisywanie adresów mailowych w kodzie VBA nie jest dobrym pomysłem, więc wprowadzimy pętlę For Each, która odezwie się do komórek przygotowanej tabeli z lista maili.
    Wyśle maila do każdego z bazy danych. Nasz baza, to tabela, więc można do niej dodawać nowe wiersze, które będą brane pod uwagę jako nowe maile do wysyłki.
    Jeśli chcesz zacząć programować w dowolnym języku, to warto zacząć właśnie od Visual Basic for Application. Jest to prosty język, który wprowadzi Cię w świat pętli, skoków, deklaracji zmiennych, instrukcji warunkowych.
    Z łatwością przejdziesz później do innych języków.
    W programowaniu liczy się podejście, a tego nauczysz się programując w dowolnym języku.
    Jeśli jesteś osobą początkującą, to zapraszam do oglądania siedmiu poprzednich odcinków, w których pokazałem, jak zacząć zabawę z rejestratorem makr. Zarejestrujesz swoje pierwsze makro i poddasz je edycji. W pierwszym filmie pokazuję jak odnaleźć się w edytorze Visual Basic i które polecenia przydają się na początku.
    Drugi film, to już konkretny przykład zastosowania pętli For, deklaracja zmiennych i zarządzanie rekordami bazy danych. Wszystko oczywiście w pełni automatycznie.
    Jeśli uznasz, że ten materiał nadaje się do nauki programowania, to podaj film dalej, aby wszyscy mogli zacząć przygodę z Excelem, na poziomie makr.
    Pisz śmiało w komentarzu, jak podoba Ci się taka forma nauki i jak oceniasz film. Życzę Ci skutecznej nauki i miłego odbioru‼️
    Potrzebujesz konkretnej wiedzy?
    Sprawdź moje szkolenia na stronie norbertwaszak.pl
    Ucz się za free na moim profilu Facebook / include.akademia
    Znajdź mnie na Instagramie / norbertwaszak
    DZIĘKI, ŻE OGLĄDAŁEŚ!

КОМЕНТАРІ • 35

  • @wojciechwisniewski2510
    @wojciechwisniewski2510 3 роки тому +1

    Super webinar tak jak wszystkie o VBA,

    • @IncludeAkademia
      @IncludeAkademia  3 роки тому

      Dzięki 👍. Tak jak obiecałem plik do ściągnięcia w moim pierwszym komentarzu. Do zobaczenia w środę o 18:00. Będziesz?

    • @IncludeAkademia
      @IncludeAkademia  3 роки тому

      @UCh0D2OykFYaUKf9w5Ose5hg Mam już 34 filmy do kursu o VBA. Niebawem ogłosimy Przedsprzedaż. Mam już na mojej stronie norbertwaszak.pl kurs z podstaw i osobny do tabeli przestawnej. Docelowo kończę VBA i zaczynam serie Power (Query, Pivot, BI).

    • @wojciechwisniewski2510
      @wojciechwisniewski2510 3 роки тому +1

      @@IncludeAkademia super w kurs VBA wchodzę, Power query teraz się uczę :)

  • @gabka75
    @gabka75 Рік тому +1

    Prosto i na temat, dziękuję

  • @IncludeAkademia
    @IncludeAkademia  3 роки тому

    Wysyłamy maila z poziomu Excel. Link do pliku z filmu:
    norbertwaszak.pl/wp-content/uploads/2021/04/wysylka-maili2.xls

  • @pw4396
    @pw4396 2 роки тому +2

    Dzień dobry, a jak wysłać dany arkusz (lub jego zakres) nie jako załącznik, ale w treści e-maila - nie tracąc formatowania?

  • @aleksandraksmartaz4048
    @aleksandraksmartaz4048 2 роки тому +2

    złoto

  • @user-by1ud2qm5u
    @user-by1ud2qm5u 9 місяців тому +1

    Bardzo dziekuje za film. Bardzo pomocny. Czy bylaby mozliwosc pokazania rowniez jak zautomatyzowac pobranie tytulu maila i tekstu maila z excela? Spotkalam sie z tym raz. Jak co miesiac wysyla sie raport - te same kontakty, tytul - i w tresci miesiac sie tylko zmienia.

    • @IncludeAkademia
      @IncludeAkademia  9 місяців тому

      Dzięki. Trzeba zadeklarować zmienną typu string dla tytułu i treści. przypisać do zmiennych wartości z komórek, a następnie wprowadzić ją w miejsca odpowiedzialne za te informacje w kodzie.

  • @sylwesterlis9518
    @sylwesterlis9518 5 місяців тому +1

    ok

  • @capri3168
    @capri3168 2 роки тому +1

    Bardzo pomocny film, jednak mam pewien problem.. Pisząc treść maila i używając polskich znaków, po wygenerowaniu się wiadomości w outlooku polskie znaki zamieniane są na "znaczki". Jak można to zmienić?

    • @IncludeAkademia
      @IncludeAkademia  2 роки тому

      Moim skromnym zdaniem wina leży po stronie ustawień kodowania znaków. Nie ma problemu z kodem, tylko z ustawieniami Outlooka.

  • @aleksandraksmartaz4048
    @aleksandraksmartaz4048 2 роки тому +1

    a jak zrobic uwarunkowanie żeby np po spełnieniu szeregu warunków w excelu (konkretne komórki = konkretna wartość) outlook wysyłał na bieżąco maila na adres z tego excela? Tylko nie wszystko na raz tylko sekwencyjne. Warunki są spełnione to wyślij maila do tej osoby spełniającej warunki.

    • @IncludeAkademia
      @IncludeAkademia  2 роки тому

      Wewnątrz pętli FOR EACH możesz wstawić warunek IF np. If MojaKomorka.Offset(0, 1).Value = "wyślij" Then ..... W tym przykładzie, jeśli w komórce położonej o jedną w prawo ( Offset(0,1)) pojawi się napis wyślij, wtedy (THEN), i cała reszta kodu wysyłania. Na końcu trzeba wstawić END IF.

  • @czajka1183
    @czajka1183 Рік тому +1

    Mógłbyś napisać jak zrobić, żeby mail był wysyłany tylko do jednej osoby z bazy danych maili, a będzie wiedział, do którego wysłać przez ich indywidualne id, które musi się zgadzać z id z innego pliku?(coś w stylu wyszukaj pionowo ale w vba) Chce żeby ten przycisk był uniwersalny i wypełniał wszystko automatycznie z zależności do jakiej osoby mam sprawę, a nie do wszystkich. Z góry dziękuje!

    • @IncludeAkademia
      @IncludeAkademia  9 місяців тому

      Wyszukaj.pionowo w VBA można uzyskać za pomocą Application.WorksheetsFunction.vlookup. Nie piszę, że to najlepszy sposób ale jeśli znasz dobrze vlookup, to najszybciej napiszesz to w ten sposób.

  • @izawojdyo1879
    @izawojdyo1879 2 роки тому +1

    Czy jeżeli chce wysłać osobnego maila do każdego odbiorcy z listy to wystarczy zamienić
    .To = .To & Chr(59) & komorka.Value na .To = komorka.Value ??

    • @IncludeAkademia
      @IncludeAkademia  2 роки тому +1

      Cześć Iza. Wiadomość tworzona jest przed pętlą For, więc kod tworzy wiadomość, a następnie w pętli dodaje kontakty. Twoja propozycja zmiany, stworzy jedną wiadomość i zacznie uzupełniać pole Do: kontaktami, za każdym razem zamieniając adres email kolejnym z listy. Ostatecznie wyśle jednego maila, tylko do ostatniej osoby z listy kontaktów. Aby wysłać osobnego maila do każdego z listy kontaktów powinnaś w pętli FOR zapisać tworzenie maila, wybór kontaktu (Twoja propozycja) i wysłanie maila. Pętla wykona za każdym przejściem całą procedurę tworzenia, dodania kontaktu i wysłania od nowa. Powodzenia :)

  • @Terranikk
    @Terranikk Рік тому +1

    a czy sie da zrobic tak, że gdy otrzymam odpowiedz na mojego maila ktorego wysłałem za pomocą tego makra, to np komórka J6 zmieni kolor?

    • @IncludeAkademia
      @IncludeAkademia  Рік тому +1

      Cześć Michał. Zapewne tak. Mamy w Excelu dostęp do obiektów Outlook. Problem jest, gdy mówimy o odpowiedzi na konkretny mail. Nie miałem jeszcze do czynienia z takim zadaniem. Trzeba rozpisać problem na części i każdą cześć rozwiązać. Jeśli kiedyś wpadnę na pomysł rozwiązania tej zagadki, to dam znać 👍

  • @inbluarcobaleno2264
    @inbluarcobaleno2264 2 роки тому +1

    Witam, a jak wysłać tylko jeden Arkusz z wielu z pliku Excela ?

    • @IncludeAkademia
      @IncludeAkademia  2 роки тому

      Cześć. Jeśli ma iść jako załącznik, to przed wysłaniem trzeba te arkusze z kilku plików zapakować w jeden. Można to zrobić za pomocą VBA lub PowerQuery.

  • @wojciechkempinski
    @wojciechkempinski Рік тому

    mam problem z odpalaniem tego makra automatycznie, z exela wysyła maile i jest super. Lecz ustawiłem harmonogram dla pliku .vbs jednak on nie wysyła maili

    • @IncludeAkademia
      @IncludeAkademia  Рік тому

      Wojtek, moim skromnym zdaniem w pliku vbs musisz stworzyć odwołanie do wszystkich obiektów Excela z jakich korzystasz (oraz skoroszytu i arkusza, jeśli te obiekty są w makrze wykorzystywane). VBA to pasożyt i potrzebuje aplikacji do działania. Jeśli w skrypcie odpalanym bez Excela nie dasz mu wszystkich obiektów i referencji, to zdechnie. Pozdrawiam.

  • @przemysawlachowski8553
    @przemysawlachowski8553 Рік тому +1

    Cześć.
    Czy można w takim przypadku dodać nie "zwykły podpis" tylko stopkę z Outluk'a ?

    • @IncludeAkademia
      @IncludeAkademia  Рік тому

      Próbowałem to ogarnąć i poległem. Jak znajdę rozwiązanie, to się podzielę😀

    • @grzegorzmyszka4963
      @grzegorzmyszka4963 9 місяців тому +1

      Coś pokombinowałem i poniższe rozwiązanie działa. Trzeba tylko konkretnie znaleźć ścieżkę do pliku z podpisem i użyć w kodzie.
      Nie udało mi się tylko , żeby podpis właściwie wyświetlał użyte obrazki np. .jpg...
      Option Explicit
      Sub WstawKonkretnyPodpisHTML()
      Dim SignatureFilePath As String
      Dim Signature As String
      Dim Email As Object
      ' Ustalanie ścieżki do pliku zawierającego podpis
      SignatureFilePath = "C:\Users\(nazwaużytkownika)\AppData\Roaming\Microsoft\Signatures\(nazwapodpisu).htm"
      ' Sprawdź, czy plik podpisu istnieje
      If Dir(SignatureFilePath) "" Then
      ' Otwieranie pliku i odczytywanie zawartości
      Dim SignatureFile As Object
      Set SignatureFile = CreateObject("Scripting.FileSystemObject").OpenTextFile(SignatureFilePath)
      Signature = SignatureFile.ReadAll
      SignatureFile.Close
      ' Inicjalizacja aplikacji Outlook
      Set Email = CreateObject("Outlook.Application").CreateItem(0) ' 0 reprezentuje olMailItem
      Email.To = "adres@domena.com"
      ' Wstawianie podpisu do wiadomości e-mail
      Email.HTMLBody = Email.HTMLBody & Signature
      ' Wyświetlenie wiadomości e-mail w Outlooku
      Email.Display
      '.send ' do odblokowania jeśli ma wysłać automatycznie

      Else
      MsgBox "Nie znaleziono pliku podpisu."
      End If
      End Sub
      @@IncludeAkademia

  • @mariusz7509
    @mariusz7509 Рік тому +1

    a jak bym chciał żeby do każdego poszedł osobny email ?

    • @IncludeAkademia
      @IncludeAkademia  Рік тому +1

      Pętla powoduje, że każdy rekord bazy danych to osobny mail. Jeśli chcesz do każdego wysłać inną treść, to zapisz tą treść w bazie danych (np. Excel, komórka obok) i zmień w pętli aby treść za każdym razem była pobierana. O to chodziło?

  • @esterraful
    @esterraful Рік тому

    juz przy tworzeniu pierwszej zmiennej Dim Oat as Outlook.Application mam bład "User-defined type not defined". jak to pokonac?

    • @esterraful
      @esterraful Рік тому +1

      udalo się obejść
      Dim Oap As Object
      Dim Omail As Object
      Set Oap = CreateObject("Outlook.Application")
      Set Omail = Oap.CreateItem(0)

    • @IncludeAkademia
      @IncludeAkademia  Рік тому

      Gra muzyka👍