Note: The other languages of the website are Google-translated. Back to English

Jak wysłać wiadomość e-mail, jeśli przycisk zostanie kliknięty w programie Excel?

Przypuśćmy, że musisz wysłać wiadomość e-mail za pośrednictwem programu Outlook, klikając przycisk w arkuszu programu Excel, jak możesz to zrobić? W tym artykule szczegółowo przedstawimy metodę VBA, aby to osiągnąć.

Wyślij e-mail po kliknięciu przycisku z kodem VBA


Wyślij e-mail po kliknięciu przycisku z kodem VBA

Aby wysłać wiadomość e-mail za pośrednictwem programu Outlook po kliknięciu przycisku polecenia w skoroszycie programu Excel, wykonaj następujące czynności.

1. Wstaw przycisk polecenia do arkusza, klikając Deweloper > wstawka > Przycisk polecenia (formant ActiveX). Zobacz zrzut ekranu:

2. Kliknij prawym przyciskiem myszy wstawiony przycisk polecenia, a następnie kliknij Wyświetl kod z menu po kliknięciu prawym przyciskiem myszy, jak pokazano poniżej.

3. W otwarciu Microsoft Visual Basic for Applications oknie, zamień oryginalny kod w oknie Kod na następujący skrypt VBA.

Kod VBA: wyślij wiadomość e-mail po kliknięciu przycisku w programie Excel

Private Sub CommandButton1_Click()
'Updated by Extendoffice 2017/9/14
    Dim xOutApp As Object
    Dim xOutMail As Object
    Dim xMailBody As String
    On Error Resume Next
    Set xOutApp = CreateObject("Outlook.Application")
    Set xOutMail = xOutApp.CreateItem(0)
    xMailBody = "Body content" & vbNewLine & vbNewLine & _
              "This is line 1" & vbNewLine & _
              "This is line 2"
                  On Error Resume Next
    With xOutMail
        .To = "Email Address"
        .CC = ""
        .BCC = ""
        .Subject = "Test email send by button clicking"
        .Body = xMailBody
        .Display   'or use .Send
    End With
    On Error GoTo 0
    Set xOutMail = Nothing
    Set xOutApp = Nothing
End Sub

Uwagi:

1). Zmień treść wiadomości e-mail zgodnie z potrzebą w xMailBody wiersz w kodzie.

2). Zastąp Adres e-mail z adresem e-mail odbiorcy .To = "Adres e-mail".

3). W razie potrzeby określ odbiorców DW i UDW .CC = „” i .Bcc = „” działy.

4). Zmień temat wiadomości e-mail w wierszu .Subject = "Przetestuj e-mail wysyłany przez kliknięcie przycisku".

4. wciśnij inny + Q klawisze jednocześnie, aby zamknąć Microsoft Visual Basic for Applications okno.

5. Wyłącz tryb projektowania, klikając Deweloper > Tryb projektowania. Zobacz zrzut ekranu:

Odtąd za każdym razem, gdy klikniesz przycisk polecenia, wiadomość e-mail będzie tworzona automatycznie z określonymi odbiorcami, tematem i treścią. Wyślij wiadomość e-mail, klikając Wyślij przycisk.

Uwagi: Kod VBA działa tylko wtedy, gdy używasz Outlooka jako programu pocztowego.

Z łatwością wysyłaj wiadomości e-mail przez Outlooka na podstawie pól utworzonej listy mailingowej w Excelu:

Podróż Ruta de la Plata w liczbach Wysyłać emaile użyteczność Kutools dla programu Excel pomaga w wysyłaniu e-maili przez Outlooka na podstawie pól utworzonej listy mailingowej w Excelu.
Pobierz i wypróbuj teraz! (30-dzień wolny szlak)


Podobne artykuły:


Najlepsze narzędzia biurowe

Kutools dla programu Excel rozwiązuje większość problemów i zwiększa produktywność o 80%

  • Ponowne użycie: Szybko włóż złożone wzory, wykresy i wszystko, czego używałeś wcześniej; Szyfruj komórki z hasłem; Utwórz listę mailingową i wysyłaj e-maile ...
  • Pasek Super Formula (łatwo edytować wiele wierszy tekstu i formuły); Układ do czytania (łatwe odczytywanie i edytowanie dużej liczby komórek); Wklej do filtrowanego zakresu...
  • Scal komórki / wiersze / kolumny bez utraty danych; Podziel zawartość komórek; Połącz zduplikowane wiersze / kolumny... Zapobiegaj zduplikowanym komórkom; Porównaj zakresy...
  • Wybierz Duplikat lub Unikalny Wydziwianie; Wybierz puste wiersze (wszystkie komórki są puste); Super Find i Fuzzy Find w wielu zeszytach ćwiczeń; Losowy wybór ...
  • Dokładna kopia Wiele komórek bez zmiany odwołania do formuły; Automatyczne tworzenie odniesień do wielu arkuszy; Wstaw punktory, Pola wyboru i nie tylko ...
  • Wyodrębnij tekst, Dodaj tekst, Usuń według pozycji, Usuń przestrzeń; Tworzenie i drukowanie podsumowań stronicowania; Konwertuj zawartość komórek i komentarze...
  • Super filtr (zapisz i zastosuj schematy filtrów do innych arkuszy); Zaawansowane sortowanie według miesiąca / tygodnia / dnia, częstotliwości i innych; Specjalny filtr pogrubieniem, kursywą ...
  • Połącz skoroszyty i arkusze robocze; Scal tabele na podstawie kluczowych kolumn; Podziel dane na wiele arkuszy; Konwersja wsadowa xls, xlsx i PDF...
  • Ponad 300 zaawansowanych funkcji. Obsługuje Office / Excel 2007-2021 i 365. Obsługuje wszystkie języki. Łatwe wdrażanie w przedsiębiorstwie lub organizacji. Pełne funkcje 30-dniowa bezpłatna wersja próbna. 60-dniowa gwarancja zwrotu pieniędzy.
karta kte 201905

Karta Office wprowadza interfejs z zakładkami do pakietu Office i znacznie ułatwia pracę

  • Włącz edycję i czytanie na kartach w programach Word, Excel, PowerPoint, Publisher, Access, Visio i Project.
  • Otwieraj i twórz wiele dokumentów w nowych kartach tego samego okna, a nie w nowych oknach.
  • Zwiększa produktywność o 50% i redukuje setki kliknięć myszką każdego dnia!
officetab dół
Sortuj komentarze według
Komentarze (73)
Znamionowy 3.5 z 5 · 1 oceny
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć, chcę wysłać dane z tabeli przestawnej, czy możesz mi pomóc
Ten komentarz został zminimalizowany przez moderatora na stronie
Czy można napisać skrypt tak, aby po kliknięciu przycisku dołączał się do wiadomości e-mail jak powyżej, ale przycisk również usuwał? tak, że kopia pliku wysyłanego pocztą e-mail nie ma już przycisku?
Ten komentarz został zminimalizowany przez moderatora na stronie
Tuż poniżej „.Body = xMailBody” dodaj następujące
.Attachments.Add ActiveWorkbook.FullName
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć Danie.

Dodałem część, jak powiedziałeś, ale wiadomość e-mail z załączonym skoroszytem nadal ma włączone przyciski.
Ten komentarz został zminimalizowany przez moderatora na stronie
cześć, czy można to ustawić tak, abym nie musiał naciskać wyślij - automatycznie wysyła e-mail????
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć,
Zastąp wiersz .Wyświetl z .Wyślij powyższy kod VBA.
Ten komentarz został zminimalizowany przez moderatora na stronie
generuje tylko jedną wiadomość e-mail i będzie nadpisywać zawartość zamiast otwierać wiele wersji roboczych wiadomości e-mail.
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć wszystkim po pierwsze Wielkie dzięki, ten post jest bardzo pomocny i pracuje nad załącznikiem. To działa dla mnie, ale żadne aktualizacje nie są zapisywane w arkuszu, musisz nacisnąć przycisk Zapisz. Chciałbym, aby załącznik zawierał to, co aktualnie znajduje się w arkuszu Excela.

Mogę to osiągnąć za pomocą wbudowanej funkcji poczty e-mail w programie Excel, ale chciałem mieć przycisk, ponieważ muszę zakodować konkretny adres e-mail.

Podsumowując, chciałbym wiedzieć:

Chciałbym wiedzieć, czy istnieje sposób: po otwarciu przez użytkownika skoroszytu programu Excel i wprowadzeniu zmian, czy przycisk zachowa załącznik z aktualizacjami?
Ten komentarz został zminimalizowany przez moderatora na stronie
Dobry dzień,
Kod został zoptymalizowany. Proszę spróbować i dzięki za komentarz.

Private Sub CommandButton1_Click ()
'Aktualizowany przez Extendoffice 2017 / 9 / 14
Dim xOutApp jako obiekt
Dim xOutMail jako obiekt
Dim xMailBody jako ciąg
On Error Resume Next
Ustaw xOutApp = CreateObject("Outlook.Application")
Ustaw xOutMail = xOutApp.CreateItem(0)
ActiveWorkbook.Save
xMailBody = "Zawartość treści" & vbNewLine & vbNewLine & _
"To jest linia 1" & vbNewLine & _
„To jest wiersz 2”
On Error Resume Next
Z xOutMail
.To = "Adres e-mail"
.CC = „”
.BCC = „”
.Subject = "Przetestuj e-mail wysyłany przez kliknięcie przycisku"
.Body = xMailBody
.Attachments.Add ActiveWorkbook.FullName
.Wyświetl 'lub użyj .Wyślij
Kończyć z
Przy błędzie GoTo 0
Ustaw xOutMail = Nic
Ustaw xOutApp = Nic
End Sub
Ten komentarz został zminimalizowany przez moderatora na stronie
Jak mogę dołączyć aktywny skoroszyt do wiadomości e-mail po naciśnięciu przycisku?
Ten komentarz został zminimalizowany przez moderatora na stronie
Dzień dobry,
Tuż poniżej „.Body = xMailBody” dodaj następujące
.Attachments.Add ActiveWorkbook.FullName
Ten komentarz został zminimalizowany przez moderatora na stronie
Teria como em vez de enviar planilha, enviar as informações em imagem?
Ten komentarz został zminimalizowany przez moderatora na stronie
używając tego kodu VBA, czy mogę odwołać się do informacji o komórce w treści wiadomości e-mail? Na przykład, jak odnieść wartości komórek do poniższego kodu?

xMailBody = "Zawartość treści" & vbNewLine & vbNewLine & _
"To jest linia 1" & vbNewLine & _
„To jest wiersz 2”

Również za pomocą kodu (.TO = "adres e-mail"). jak mogę zmusić "adres e-mail" do pobrania adresu e-mail z komórki w kolumnie obok.


Dzięki,
Ten komentarz został zminimalizowany przez moderatora na stronie
Czy można dodać drugi przycisk e-mail w tym samym arkuszu? Kiedy próbuję to zrobić, łączy się z kodem z oryginalnego przycisku e-mail. dzięki.
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć,
Do każdego przycisku należy przypisać różne kody.
Ten komentarz został zminimalizowany przez moderatora na stronie
używając tego kodu VBA, czy mogę odwołać się do informacji o komórce w treści wiadomości e-mail? Na przykład, jak odnieść wartości komórek do poniższego kodu?

xMailBody = "Zawartość treści" & vbNewLine & vbNewLine & _
"To jest linia 1" & vbNewLine & _
„To jest wiersz 2”

Dzięki,
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć Glenn,
Proszę zastosować następujący kod. Dziękuję za Twój komentarz.
xMailBody = [B5]
Ten komentarz został zminimalizowany przez moderatora na stronie
Czy można zamiast wysyłać załącznik w wiadomości e-mail, wysłać hiperłącze do pliku (znajdującego się na SharePoint)?
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć Laurie,
Nie mogę ci w tym pomóc. Dziękuję za Twój komentarz.
Ten komentarz został zminimalizowany przez moderatora na stronie
Czy mogę odwołać się do wartości w komórce w temacie za pomocą ciągu? Jakaś odmiana poniższych?

.Subject = "Nowe wydarzenie:" & Target.Address = "$B$38"
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć Abi,
Zmień kod na .Subject = "Nowe wydarzenie:" & [B38].
Dziękuję za Twój komentarz.
Ten komentarz został zminimalizowany przez moderatora na stronie
Witam,
Czy ktoś może mi pomóc w spełnieniu następujących wymagań?
Mam arkusz Excela z dwiema rozwijanymi listami.

1 lista rozwijana- lista działów

2 rozwijana lista- kategoria

To, czego chcę, to kiedy wybieram dział i kategorię z list; (na przykład jeśli wybieram "sprzedaż" w dziale i "raport miesięczny" w kategorii)

Muszę wysłać e-mailem wersję PDF tego arkusza roboczego do zespołu sprzedaży z tematem e-maila to raport miesięczny.

Jeśli z listy działów wybiorę „produkcję”, e-mail powinien trafić do grupy osób na produkcji.

Doceniam, jeśli możesz mi w tym pomóc

Rasike
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć Rasike,
Przepraszam, nie mogę ci w tym pomóc. Zapraszamy do zadawania pytań na naszym forum: https://www.extendoffice.com/forum.html aby uzyskać więcej wsparcia Excel od naszych profesjonalistów Excel lub innych fanów Excela.
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć,

Jak mogę otrzymać pocztę, aby automatycznie dodać podpis z programu Outlook?
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć John,
Poniższy kod VBA może pomóc w rozwiązaniu problemu. Dzięki za komentarz.

Private Sub CommandButton1_Click ()
'Aktualizowany przez Extendoffice 2019 / 6 / 26
Dim xOutApp jako obiekt
Dim xOutMail jako obiekt
On Error Resume Next
Ustaw xOutApp = CreateObject("Outlook.Application")
Ustaw xOutMail = xOutApp.CreateItem(0)
Z xOutMail
.Wyświetl 'lub użyj .Wyślij
.To = "Adres e-mail"
.CC = „”
.BCC = „”
.Subject = "Przetestuj e-mail wysyłany przez kliknięcie przycisku"
.HTMLBody = "To jest testowa wiadomość e-mail wysyłana w programie Excel" & "
" & .HTMLBody
'.Wysłać
Kończyć z
Przy błędzie GoTo 0
Ustaw xOutMail = Nic
Ustaw xOutApp = Nic
End Sub
Ten komentarz został zminimalizowany przez moderatora na stronie
Czy musisz być użytkownikiem Excela, gdy naciskasz przycisk, aby wysłać wiadomość e-mail? czy tylko osoba otrzymująca e-mail musi być użytkownikiem programu Outlook?
Ten komentarz został zminimalizowany przez moderatora na stronie
Dzień dobry,
Ponieważ wiadomość e-mail musi zostać wysłana przez program Outlook po kliknięciu przycisku w programie Excel, musisz mieć zainstalowany program Outlook na swoim komputerze, aby działał.
Ten komentarz został zminimalizowany przez moderatora na stronie
Chcę wysłać arkusz programu Excel w wiadomości e-mail, ale go nie wysyła. Jak napisać kod, aby wysłać dokument jako e-mail?
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć Marszu,
Poniższy kod VBA może pomóc w rozwiązaniu problemu.

Sub Wyślij arkusz roboczy()
„Aktualizacja 20190626”
Dim xFile jako ciąg
Przyciemnij xFormat tak długo
Dim Wb jako skoroszyt
Dim Wb2 jako skoroszyt
Dim FilePath jako ciąg
Dim FileName As String
Przyciemnij OutlookApp jako obiekt
Przyciemnij OutlookMail jako obiekt
On Error Resume Next
Application.ScreenUpdating = Fałsz
Ustaw Wb = Application.ActiveWorkbook
Aktywny arkusz.Kopiuj
Ustaw Wb2 = Application.ActiveWorkbook
Wybierz Case Wb.FileFormat
Sprawa xlOpenXMLKsiążka:
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
Przypadek xlOpenXMLWorkbookMakroWłączone:
Jeśli Wb2.HasVBProject to
xFile = ".xlsm"
xFormat = xlOpenXMLWorkbookMacroEnabled
Więcej
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
End If
Przypadek Excel8:
xFile = ".xls"
xFormat = Excel8
Przypadek xlExcel12:
xFile = ".xlsb"
xFormat = xlExcel12
End Select
FilePath = Środowisko$("temp") & "\"
FileName = Wb.Name & Format (teraz "dd-mmm-rr h-mm-ss")
Ustaw OutlookApp = CreateObject("Outlook.Application")
Ustaw OutlookMail = OutlookApp.CreateItem(0)
Wb2.SaveAs Ścieżka pliku i nazwa pliku i xFile, Format pliku:=xFormat
Z OutlookMail
.To = "skyyang @extendoffice.com ”
.CC = „”
.BCC = „”
.Subject = "funkcje kte"
.Body = "Sprawdź i przeczytaj ten dokument."
.Załączniki.Dodaj Wb2.FullName
.Pokaz
'.Wysłać
Kończyć z
Wb2.Zamknij
Zabij ścieżkę pliku i nazwę pliku oraz xFile
Ustaw OutlookMail = Nic
Ustaw OutlookApp = Nic
Application.ScreenUpdating = True
End Sub
Ten komentarz został zminimalizowany przez moderatora na stronie
Jak mogę dołączyć aktywny arkusz do wiadomości e-mail po naciśnięciu przycisku?
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć Grant,
Kliknij prawym przyciskiem myszy przycisk i wybierz Wyświetl kod, a następnie skopiuj poniższy kod między wierszami Private Sub i End Sub. Mam nadzieję, że mogę pomóc. Dzięki za komentarz.

Dim xFile jako ciąg
Przyciemnij xFormat tak długo
Dim Wb jako skoroszyt
Dim Wb2 jako skoroszyt
Dim FilePath jako ciąg
Dim FileName As String
Przyciemnij OutlookApp jako obiekt
Przyciemnij OutlookMail jako obiekt
On Error Resume Next
Application.ScreenUpdating = Fałsz
Ustaw Wb = Application.ActiveWorkbook
Aktywny arkusz.Kopiuj
Ustaw Wb2 = Application.ActiveWorkbook
Wybierz Case Wb.FileFormat
Sprawa xlOpenXMLKsiążka:
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
Przypadek xlOpenXMLWorkbookMakroWłączone:
Jeśli Wb2.HasVBProject to
xFile = ".xlsm"
xFormat = xlOpenXMLWorkbookMacroEnabled
Więcej
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
End If
Przypadek Excel8:
xFile = ".xls"
xFormat = Excel8
Przypadek xlExcel12:
xFile = ".xlsb"
xFormat = xlExcel12
End Select
FilePath = Środowisko$("temp") & "\"
FileName = Wb.Name & Format (teraz "dd-mmm-rr h-mm-ss")
Ustaw OutlookApp = CreateObject("Outlook.Application")
Ustaw OutlookMail = OutlookApp.CreateItem(0)
Wb2.SaveAs Ścieżka pliku i nazwa pliku i xFile, Format pliku:=xFormat
Z OutlookMail
.To = "skyyang @extendoffice.com ”
.CC = „”
.BCC = „”
.Subject = "funkcje kte"
.Body = "Sprawdź i przeczytaj ten dokument."
.Załączniki.Dodaj Wb2.FullName
.Pokaz
'.Wysłać
Kończyć z
Wb2.Zamknij
Zabij ścieżkę pliku i nazwę pliku oraz xFile
Ustaw OutlookMail = Nic
Ustaw OutlookApp = Nic
Application.ScreenUpdating = True
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć,

Czy istnieje sposób na zmianę nazwy pliku na bieżącą datę, gdy jest on dołączany do wiadomości e-mail?
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć,

Pracowałem na kartce, ale nie mogę jej dokończyć. Mam nadzieję, że możesz mi pomóc :)

Sam plik musi być w formacie xltm (szablon) i musi dołączyć do wiadomości własny arkusz.

I auto podpis, wtedy byłbym bardzo szczęśliwy.

Z góry dziękuję /Dr. Nang
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć, uruchamiam arkusz kalkulacyjny z 80 indywidualnymi kontami kreskowymi i z dużym powodzeniem użyłem kodu VBA na tej stronie. Jednak w treści e-maila chciałbym skopiować i wkleić określony zakres komórek konta podczas wysyłania, aby klient mógł mieć historię. Czy możesz w tym pomóc z kodem VBA?
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć! Dziękuję bardzo za to. To była fantastyczna pomoc.

Czy można wysłać aktywny arkusz roboczy, naciskając przycisk zamiast pełnego skoroszytu?

Dzięki!
Nie ma tu jeszcze żadnych komentarzy
Pokaż więcej
Zostaw swój komentarz
Publikowanie jako gość
×
Oceń ten post:
0   Postacie
Sugerowane lokalizacje

Bądż na bieżąco

Prawa autorskie © 2009 - www.extendoffice.com. | Wszelkie prawa zastrzeżone. Zasilany przez ExtendOffice, | Mapa strony
Microsoft i logo Office są znakami towarowymi lub zastrzeżonymi znakami towarowymi Microsoft Corporation w Stanach Zjednoczonych i / lub innych krajach.
Chronione przez Sectigo SSL