Wysyłanie maili w Excelu za pomocą VBA

แชร์
ฝัง
  • เผยแพร่เมื่อ 27 ธ.ค. 2024

ความคิดเห็น • 57

  • @statatom
    @statatom 16 วันที่ผ่านมา

    Genialny film i super makro. Mam do wysłania 400 maili każdy o innej treści do kogoś innego. Biorę to makro i wysyłam. Niesamowicie dobrze wytłumaczone.

  • @djboskiprzemo
    @djboskiprzemo 11 หลายเดือนก่อน

    Sebastianie! Zmieniłeś tym filmem mój tydzień pracy z 5 dni na 4 :) Wielkie dzięki!

  • @19artur69
    @19artur69 ปีที่แล้ว

    Super lekcja, zwięźle i na temat. Bardzo dziękuję za Twoją pracę.

  • @kaminskiautomatyka
    @kaminskiautomatyka หลายเดือนก่อน

    Witam, pytanie początkującego:
    W 6:30 filmu jestem, wykonuje wszystko po kolei i po wciśnięciu F8 dostaje taki komunikat:
    Run-time error 287
    Application-defined or object-defined error
    Proszę o pomoc

  • @SebastianMąka-j3y
    @SebastianMąka-j3y 11 หลายเดือนก่อน +2

    Sebastianie, makro działa bardzo dobrze. Czy jest jakiś sposób żeby załączać do każdego maila domyślną stopkę z Outlook w formacie HTML z obrazkami w niej zawartymi?

  • @piotrszy
    @piotrszy 23 วันที่ผ่านมา

    dzień dobry - super materiał! Pojawia mi się błąd "Nieprawidłowa nazwa pliku lub katalogu" - bez załączników wszystko działa, ale mam dokładnie wpisaną nazwę Arkusz1 i wyskakuje mi ten błąd, również na Pana makru.

  • @mmarcin80
    @mmarcin80 ปีที่แล้ว

    Dobra robota. Dobrze sie slucha. Fajnie tlumaczysz.. keep up good work

  • @ewamakowska4349
    @ewamakowska4349 5 หลายเดือนก่อน

    Jakie napisać polecenie, żeby treść maila została pobrana z kilku komórek arkusza

  • @omariscoming5018
    @omariscoming5018 ปีที่แล้ว

    nie wyswietla mi polskich znakow w tytule/body maila. pewnie przez ustawienia systemu/kodowanie natomiast nie moge dojsc co trzeba zmienic.

  • @michalszymanski1897
    @michalszymanski1897 ปีที่แล้ว

    Witam, Super sprawa, tylko mam problem gdy chcę wysłać aktualny Plik w którym znajduje się to makro jak stworzyć załącznik jako kopię ?

  • @piotrrak2897
    @piotrrak2897 ปีที่แล้ว

    Dzień dobry jest chyba jeszcze inny problem zauważyłem że załączniki muszą być umieszczone w tym samym katalogu podając dwie różne ścieżki do załączników występuje błąd. Można jakoś temu zaradzić?. Proszę o pomoc.

  • @piotrrak2897
    @piotrrak2897 ปีที่แล้ว

    Super!! ale co zrobić jeżeli mam alfabetycznie uporządkowaną listę osób ale nie wszyscy mają maila wtedy napotykając brak adresu program nie idzie dalej i nie sprawdza kolejnych pozycji proszę o pomoc.

  • @majaroszuk
    @majaroszuk ปีที่แล้ว

    Swietny materiał. Mam pytanie, czy jest mozliwość dodawania załączników z dysku z konkretnego folderu ale tylko i wyłącznie na podstawie daty modyfikacji? Czyli jesli w folderze co miesiąc przybywają 2 nowe pliki, czy jest możliwosc wysłania tylko 2 z bierzącego miesiąca i ponawiać to co miesiąc?

  • @marcincieslak4031
    @marcincieslak4031 ปีที่แล้ว

    Super film i tlumaczenie.
    A jak to wyglada gdy chce odniesc sie do zalacznika x onedribe lub sharepoint ktorego adres jest w komorce excel? Czy moge w jakis sposob dodac zalacznik z chmury bo w tym momencie nie zalacza mi nic w takim przyadku?

  • @DamianRichert-t8n
    @DamianRichert-t8n ปีที่แล้ว

    Fimik petarda, świetnie wytłumaczone, po prostu top :D
    a czy można się dowiedzieć, w jaki sposób wstawić obraz jpg albo png do treści maila oraz żeby na samym końcu była stopka, która jest zapisana w outlook?

  • @Arek-b7i
    @Arek-b7i ปีที่แล้ว

    Mega nagranie! Czy można wybierać sobie skrzynkę z której ma być wysłana wiadomość? W outlooku posiadam dwie.

  • @esterraful
    @esterraful 2 ปีที่แล้ว

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

    • @esterraful
      @esterraful 2 ปีที่แล้ว

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

    • @smartexcel-s.godziszewski
      @smartexcel-s.godziszewski  2 ปีที่แล้ว

      A czy ma Pan włączoną bibliotekę, o której wspominam na początku filmu?
      W oknie VBE (edytor Visual Basic) w menu TOOLS należy wybrać REFERENCES a następnie zaznaczyć (dodać) bibliotekę Microsoft Office 16.0 Object Library.

    • @ewelinaanczewska1480
      @ewelinaanczewska1480 ปีที่แล้ว

      Mam ten sam komunikat pomimo włączonej biblioteki :/

    • @esterraful
      @esterraful ปีที่แล้ว

      @@smartexcel-s.godziszewski z tej strony akurat Pani :) tak, mialam wlaczona biblioteke, ale jak wspomnialam w powyzszym udalo sie delikatnie zmodyfikowac kod.

  • @j.szevczyk857
    @j.szevczyk857 ปีที่แล้ว

    Mam problem, gdy chcę zrobić, aby w treści wiadomości znalazła się zawartość kilku komórek z zakresu F4, do ostatniej niepełnej to wyskakuje błąd. Chciałbym wiedzieć, czy jest to możliwe do zrobienia. Z góry dziękuję za odpowiedź.

    • @smartexcel-s.godziszewski
      @smartexcel-s.godziszewski  ปีที่แล้ว

      Dzięki za komentarz. Tak jest to możliwe do zrobienia. Należy podejść do tematu tak, że używając pętli np. For Next lub For Each Next połączyć zawartość z kilku (dowolnej ilości wierszy/komórek) komórek wstawiając je do zmiennej.
      Np. coś takiego:
      Dim zawartosc As String, i As Integer
      For i = 1 To 5
      zawartosc = zawartosc & Range("A" & i) & vbNewLine
      Next i
      Oczywiście jest to prosty przykład i należy go dostosować pod własne potrzeby a nawet rozbudować :).
      Kolejny krok to użycie tej zmiennej jako wartości odpowiadającej za treść wiadomości.
      Pozdrawiam

    • @j.szevczyk857
      @j.szevczyk857 ปีที่แล้ว

      @@smartexcel-s.godziszewski Dziękuję bardzo za odpowiedź, wszystko elegancko działa :D

    • @smartexcel-s.godziszewski
      @smartexcel-s.godziszewski  ปีที่แล้ว

      @@j.szevczyk857 Super :) Pozdrawiam

  • @werczyk
    @werczyk ปีที่แล้ว

    Świetnie Pan tłumaczy! Jestem w szoku jak to szybko zadziałało :o Mam pytanie - jeśli w Outlooku mam podpięte 2 konta pocztowe, to czy jestem w stanie w kodzie zawrzeć z którego konta chcę wysłać wiadomość?

    • @smartexcel-s.godziszewski
      @smartexcel-s.godziszewski  ปีที่แล้ว +1

      Dzień dobry, dziękuję za komentarz. Odpowiadając na pytanie, to jak najbardziej możemy w kodzie zawrzeć instrukcje, które będą zmieniać konta przed wysłaniem.
      Zapraszam do najnowszego filmu, w którym pokazuje jak to zrobić :)
      th-cam.com/video/m6dy6Vmiu-Y/w-d-xo.html
      Pozdrawiam

  • @sawomirwasilewski2979
    @sawomirwasilewski2979 ปีที่แล้ว

    Mam plik XLS w którym są terminy wykonania pewnych rzeczy. Ponieważ by kontrolować je trzeba plik otworzyć i ręcznie sprawdzić więc zdarza się, że pewne rzeczy przegapię. O ile ten plik otwierany jest tylko czasami to Outlooka używam codziennie. Po obejrzeniu Pana szkolenia przyszło mi do głowy by po otwarciu Outlooka otwierał sobie ten plik odpytał połę data i wysłał email z przypomnieniem lub dodał informację w kalendarzu. Jest to możliwe, jeżeli tak to jak to zrobić?

    • @smartexcel-s.godziszewski
      @smartexcel-s.godziszewski  ปีที่แล้ว

      Dziękuję za komentarz. Wydaję mi się, że dobrym sposobem będzie napisanie makra bezpośrednio w programie Outlook i dodanie go na wstążkę. Makro musi powołać obiekt dotyczący aplikacji Excel do "życia" w celu uruchomienia konkretnego pliku a następnie wykonać makro, które wyśle plik z przypomnieniem (coś na wzór w filmie). Pozdrawiam

    • @maciejson666
      @maciejson666 11 หลายเดือนก่อน

      Czy udało się panu napisać takie makro. ?

  • @andrzej7531
    @andrzej7531 7 หลายเดือนก่อน

    Super instruktaż! Tylko takie mam małe pytanie? Jak zrobić, aby w treści wiadomości zamieścić wartości z kilku komórek? Potrzebuję zrobić wiadomość o takiej samej treści, jednak cyfra zawarta w środku musi być inna do wszystkich (podana w innej komórce). Ktoś doradzi jak to zrobić? :)

  • @grzesiom
    @grzesiom ปีที่แล้ว

    A jest jakaś prosta metoda na wstawienie do maila pod body tabeli z arkusza?

    • @smartexcel-s.godziszewski
      @smartexcel-s.godziszewski  ปีที่แล้ว

      Aby w mailu została zawarta tabela, wykorzystałbym do tego język znaczników HTML za pomocą, którego np. w pętli (lub tablicy) zbudujemy samodzielnie tabele a następnie umieścimy ją we właściwości .HTMLBody zamiast .Body
      Tak jak wspomniałem na początku, język HTML pozwoli nam wtedy budować tabelki w Excelu i umieszczać je w treści maila a nie w załączniku.
      Przykład takiego maila poniżej:
      Option Explicit
      Sub wysylanieMaila()
      Dim rng As Range, cell As Range, ZawartoscHtml As String, i As Long, j As Long
      'Ustawiamy zakres tabeli do wstawienia w mailu
      Set rng = Arkusz1.Range("A1:H" & Arkusz1.Range("a1").CurrentRegion.Rows.Count)
      'Zmienna, która rozpoczyna składnie HTML
      ZawartoscHtml = " "
      'Pętla, która pobiera wiersze i kolumny, tworząc jednocześnie tabelę
      For i = 1 To Arkusz1.Range("a1").CurrentRegion.Rows.Count
      ZawartoscHtml = ZawartoscHtml & ""
      For j = 1 To Arkusz1.Range("a1").CurrentRegion.Columns.Count
      ZawartoscHtml = ZawartoscHtml & "" & Cells(i, j).Value & ""
      Next
      ZawartoscHtml = ZawartoscHtml & ""
      Next
      ZawartoscHtml = ZawartoscHtml & ""
      'Tworzymy zmienne
      Dim Oap As Outlook.Application
      Dim Omail As Object
      'UstawiamyZmienne
      Set Oap = New Outlook.Application
      Set Omail = Oap.CreateItem(0)
      With Omail
      .To = "kontakt@smartexcel.pl"
      .CC = "kontakt@smartexcel.pl"
      .Subject = "Wiadomość testowa"
      .HTMLBody = ZawartoscHtml
      .Send
      End With
      'Oczyszczanie pamięci
      Set Oap = Nothing
      Set Omail = Nothing

      End Sub
      Powodzenia

    • @grzesiom
      @grzesiom ปีที่แล้ว

      ​@@smartexcel-s.godziszewski Dzięki, udało mi się wstawić tabele przez WordDocument, ale działa jakoś wolno i długo myśli,bo maili generuje około 30. Pokombinuję z htmlem na pewno będzie szybciej działać.

  • @m1sio
    @m1sio 2 ปีที่แล้ว

    Chciałbym się zapytać co należy zmienić w kodzie tak aby w mailu była również sygnatura? Czy jest to możliwe do osiągnięcia?

    • @smartexcel-s.godziszewski
      @smartexcel-s.godziszewski  2 ปีที่แล้ว +1

      Tak jest to możliwe do osiągnięcia. Kod należy rozbudować np. o pobieranie z odpowiedniej ścieżki własnej sygnatury. Proszę przeanalizować poniższy kod:
      Option Explicit
      Sub wysylanieMaila()
      'Tworzymy zmienne
      Dim Oap As Outlook.Application
      Dim Omail As Object
      'UstawiamyZmienne
      Set Oap = New Outlook.Application
      Set Omail = Oap.CreateItem(0)
      Dim SigString As String, Signature As String
      SigString = Environ("appdata") & _
      "\Microsoft\Signatures\Podpis1.htm" ' w tym miejscu należy wpisać nazwę własną pliku. Ścieżka: C:\Users\sgodz\AppData\Roaming\Microsoft\Signatures
      azwa_wlasna_pliku.htm
      If Dir(SigString) "" Then
      Signature = PobierzSyg(SigString)
      Else
      Signature = ""
      End If
      'SMARTEXCEL.PL (kontakt@smartexcel.pl)
      With Omail
      .To = "kontakt@smartexcel.pl"
      .CC = "kontakt@smartexcel.pl"
      '.BCC =
      .Subject = "Wiadomość testowa"
      '.Body = "To jest przykładowy mail przygotowany w Excel VBA" & Signature
      .HTMLBody = "To jest przykładowy mail przygotowany w Excel VBA" & Signature
      .Attachments.Add "C:\Users\sgodz\Documents\EXCEL - VBA3\Załącznik1.xlsx"
      .Display ' tylko wyświetlamy
      '.Send
      End With
      'Oczyszczanie pamięci
      Set Oap = Nothing
      Set Omail = Nothing
      End Sub
      Function PobierzSyg(ByVal Plik As String) As String
      Dim fso As Object
      Dim sg As Object
      Set fso = CreateObject("Scripting.FileSystemObject")
      Set sg = fso.GetFile(Plik).OpenAsTextStream(1, -2)
      PobierzSyg = sg.readall
      sg.Close
      End Function
      Powodzenia

    • @m1sio
      @m1sio 2 ปีที่แล้ว

      @@smartexcel-s.godziszewski Panie Sebastianie w którym miejscu należy wpisać te funkcje, ktora jest na koncu kodu?

    • @m1sio
      @m1sio 2 ปีที่แล้ว

      udało mi się :) pytanie nieaktyualne, problem pozostal z logiem firmy :D

  • @M.A.G.N.E.T.E.R
    @M.A.G.N.E.T.E.R 2 ปีที่แล้ว +1

    Niezwykle przydatne :)

  • @maciejbielecki838
    @maciejbielecki838 ปีที่แล้ว

    Super nagranie. Mam pytanie, czy będzie nagranie (jeśli to możliwe oczywiście), w którym np zostanie pokazane jak Tworzyć automatycznie załączniki z danych w excelu. W pliku excel mam tabelę osób (np 10, Imię i nazwisko oraz Pełna nazwa), każda z osób ma przypisanych podwładnych + ich stanowisko. Do tej pory robiłem to tak, że nagrałem makro jak filtruję po osobie, kopiuję dane do osobnego arkusza, potem zedytowałem makro do 10 osób (pętli jeszcze nie ogarnąłem do tego). A następnie już ręcznie tworzę kopię arkusza jako plik. To dość manualne i dla 10 osób jest ok. ale czy da się tak zrobić z założeniem, że nazwa pliku będzie składała sie z wartości z komórki C (np dział) + Pierwsze 3 litery imienia i nazwiska + DZIŚ()?.

    • @smartexcel-s.godziszewski
      @smartexcel-s.godziszewski  ปีที่แล้ว

      Dzięki za komentarz :) Jeśli chodzi o nagranie, które tworzy automatyczne załączniki to muszę przyznać, że na kanale jest kilka filmów, które po obejrzeniu powinny "nakierować" na takie rozwiązanie.
      Przykładowe dwa filmy, które będą pomocne to:
      th-cam.com/video/JmOs9LuKR84/w-d-xo.html
      th-cam.com/video/lwKg71D5Jmo/w-d-xo.html
      Oczywiście jest ich dużo więcej :) Rozwiązanie, o którym Pan wspomina to fajne wyzwanie w VBA ponieważ porusza ono wiele różnych zagadnień.
      Ps. jeżeli otrzymam strukturę pliku z przykładowymi danymi to postaram się taki film przygotować :)
      Pozdrawiam

  • @lvz4219
    @lvz4219 ปีที่แล้ว

    Super filmik, super tłumaczenie :) a jest możliwość wysłania w mailu zawartości pliku ( np tabelki ) bez załączania pliku ?

  • @katbar90
    @katbar90 ปีที่แล้ว

    Witam. Bardzo prosto wytłumaczone! Ogromnie ułatwi mi to prace.
    Będę miała do wysłania 300 maili, pod każdy muszę podpiąć inny załącznik (pdf z oświadczeniem). Jest jakiś sposób na automatyczne dodatnie źródła załącznika?

    • @smartexcel-s.godziszewski
      @smartexcel-s.godziszewski  ปีที่แล้ว

      Dziękuje za komentarz. Rozwiązań może być wiele. Wszystko zależy od struktury arkusza w Excelu a także jak podpisane są pliki, które będą źródłem załącznika. Można użyć VBA ale w tym przypadku wystarczy Power Query do wczytania plików z folderu do osobnego arkusza a następnie przyporządkować te ścieżki do docelowego arkusza. Musimy wyszukać (funkcja WYSZUKAJ.PIONOWO, X.WYSZUKAJ, INDEKS+PODAJ.POZYCJĘ) wspólny identyfikator dla tych danych, który jeżeli nie jest jednoznaczny można skorzystać z narzędzia wypełnianie błyskawiczne (Flash Fill), wyszukiwanie z użyciem symboli wieloznacznych ("*", "?") lub innych funkcji predefiniowanych w Excelu.
      Pozdrawiam

    • @katbar90
      @katbar90 ปีที่แล้ว

      @@smartexcel-s.godziszewski Bardzo dziękuję :)

  • @radek6119
    @radek6119 ปีที่แล้ว

    Super. Bardzo fajnie wytłumaczone i w prosty sposób. Wykorzystałem Pana kod u siebie, strasznie ułatwił mi pracę.Mam prośbę, czy może Pan pokazać jak zrobić warunek, który wyszukuje komórkę z przekroczoną datą do aktualnej i wstawia tylko taką komórkę do makra z prezentowanego przykładu. Na powyższym przykładzie makro wysyła każdy wiersz, chciałbym mieć tylko ten, który spełnia warunek daty i wtedy nastąpi wysłanie maila. Z góry dziękuję za pomoc. Pozdrawiam serdecznie

    • @smartexcel-s.godziszewski
      @smartexcel-s.godziszewski  ปีที่แล้ว

      Dziękuję za komentarz. W przypadku sprawdzenia daty potrzebna jest instrukcja warunkowa IF. Należy ją umieścić zaraz za rozpoczynającą się pętlą FOR NEXT. Instrukcja sprawdza czy data w komórce np. Range("A" & i+1) jest większa od aktualnej Now(). (Now = TERAZ(), Date() = DZIŚ())
      Przykład:
      For i = 1 To Application.WorksheetFunction.CountA(Arkusz1.Range("B2:B20"))
      If Arkusz1.Range("A" & i + 1) > Now Then ' Sprawdzane komórki z kolumny A to daty, które wraz z powiększeniem zmiennej "i" przechodzą do następnej komórki dzięki pętli.
      'tutaj cały kod tworzący i wysyłający maile
      End If
      Next i
      Pozdrawiam

    • @radek6119
      @radek6119 ปีที่แล้ว

      Dziękuję za pomoc. Sprawdziłem i makro działa bez problemów. Czekam na następne tutoriale. Pozdrawiam serdecznie.

  • @Hipsmaster
    @Hipsmaster ปีที่แล้ว

    top

  • @gabka75
    @gabka75 2 ปีที่แล้ว

    Planuję listę maili zrobić jako tabelę i wtedy można użyć For Each xxx in Nazwa tabeli, ale to rozwiązanie też bardzo fajne.