Тёмный

Wysyłanie maili w Excelu za pomocą VBA 

SmartExcel - Sebastian Godziszewski
Подписаться 3,3 тыс.
Просмотров 13 тыс.
50% 1

Опубликовано:

 

23 окт 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 55   
@djboskiprzemo
@djboskiprzemo 9 месяцев назад
Sebastianie! Zmieniłeś tym filmem mój tydzień pracy z 5 dni na 4 :) Wielkie dzięki!
@19artur69
@19artur69 11 месяцев назад
Super lekcja, zwięźle i na temat. Bardzo dziękuję za Twoją pracę.
@SebastianMąka-j3y
@SebastianMąka-j3y 9 месяцев назад
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?
@DamianRichert-t8n
@DamianRichert-t8n 10 месяцев назад
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?
@mmarcin80
@mmarcin80 Год назад
Dobra robota. Dobrze sie slucha. Fajnie tlumaczysz.. keep up good work
@smartexcel-s.godziszewski
@smartexcel-s.godziszewski Год назад
Dziękuję za komentarz.
@majaroszuk
@majaroszuk 10 месяцев назад
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?
@Arek-b7i
@Arek-b7i Год назад
Mega nagranie! Czy można wybierać sobie skrzynkę z której ma być wysłana wiadomość? W outlooku posiadam dwie.
@lvz4219
@lvz4219 11 месяцев назад
Super filmik, super tłumaczenie :) a jest możliwość wysłania w mailu zawartości pliku ( np tabelki ) bez załączania pliku ?
@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?
@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ę ?
@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 Год назад
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ć :) ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-m6dy6Vmiu-Y.html Pozdrawiam
@tomash1772
@tomash1772 5 месяцев назад
Wszystko super, zabrakło natomiast jak załączyć w body nie jedną komórkę, a kilka np tabelę 3x3, zwykłą, statyczną.
@M.A.G.N.E.T.E.R
@M.A.G.N.E.T.E.R Год назад
Niezwykle przydatne :)
@smartexcel-s.godziszewski
@smartexcel-s.godziszewski Год назад
Dziękuję :)
@andrzej7531
@andrzej7531 5 месяцев назад
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ć? :)
@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.
@ewamakowska4349
@ewamakowska4349 3 месяца назад
Jakie napisać polecenie, żeby treść maila została pobrana z kilku komórek arkusza
@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: ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-JmOs9LuKR84.html ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-lwKg71D5Jmo.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
@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ę :)
@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.
@omariscoming5018
@omariscoming5018 Год назад
nie wyswietla mi polskich znakow w tytule/body maila. pewnie przez ustawienia systemu/kodowanie natomiast nie moge dojsc co trzeba zmienic.
@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 9 месяцев назад
Czy udało się panu napisać takie makro. ?
@m1sio
@m1sio Год назад
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 Год назад
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 Год назад
@@smartexcel-s.godziszewski Panie Sebastianie w którym miejscu należy wpisać te funkcje, ktora jest na koncu kodu?
@m1sio
@m1sio Год назад
udało mi się :) pytanie nieaktyualne, problem pozostal z logiem firmy :D
@Hipsmaster
@Hipsmaster Год назад
top
@smartexcel-s.godziszewski
@smartexcel-s.godziszewski Год назад
Dziękuję za komentarz :)
@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ć.
@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
@esterraful
@esterraful Год назад
juz przy tworzeniu pierwszej zmiennej Dim Oap as Outlook.Application mam bład "User-defined type not defined". jak to pokonac?
@esterraful
@esterraful Год назад
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 Год назад
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.
@gabka75
@gabka75 Год назад
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.
@smartexcel-s.godziszewski
@smartexcel-s.godziszewski Год назад
Bardzo fajny pomysł. Dziękuje za komentarz :)
Далее
ТЕСЛА КИБЕРТРАК x WYLSACOM / РАЗГОН
1:40:47
Kopiowanie danych z Excela do Worda za pomocą VBA
24:38
Proměnné v jazyku DAX a Power BI
32:08
Просмотров 181
Makra i VBA - co tym można zrobić? - Podcast: #71
19:43
VBA - UserForm czyli formularz użytkownika
16:42
Просмотров 29 тыс.
Poznaj potęgę łączenia formuł w Excelu
48:54
ТЕСЛА КИБЕРТРАК x WYLSACOM / РАЗГОН
1:40:47