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

Cum să trimiteți e-mail dacă se face clic pe buton în Excel?

Presupunând că trebuie să trimiteți e-mail prin Outlook făcând clic pe un buton din foaia de lucru Excel, cum puteți face? Acest articol va introduce o metodă VBA pentru a o realiza în detalii.

Trimiteți e-mail dacă butonul este făcut clic cu codul VBA


Trimiteți e-mail dacă butonul este făcut clic cu codul VBA

Vă rugăm să faceți următoarele pentru a trimite un e-mail prin Outlook dacă se face clic pe un buton de comandă în registrul de lucru Excel.

1. Introduceți un buton de comandă în foaia de lucru făcând clic pe Dezvoltator > Insera > Buton de comandă (control ActiveX). Vedeți captura de ecran:

2. Faceți clic dreapta pe butonul de comandă inserat, apoi faceți clic pe Afișați codul din meniul cu clic dreapta, așa cum se arată în imaginea de mai jos.

3. În deschidere Microsoft Visual Basic pentru aplicații fereastră, înlocuiți codul original din fereastra Cod cu următorul script VBA.

Cod VBA: trimiteți e-mail dacă se face clic pe buton în 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

notițe:

1). Vă rugăm să schimbați corpul de e-mail după cum aveți nevoie în xMailBody linie în cod.

2). Inlocuieste Adresa de email cu adresa de e-mail a destinatarului în linie .To = "Adresă de e-mail".

3). Specificați destinatarii Cc și Bcc după cum doriți .CC = „” și .Bcc = „” secțiuni.

4). Schimbați subiectul e-mailului în linie .Subject = "Testați trimiterea e-mailului făcând clic pe buton".

4. apasă pe Alt + Q tastele simultan pentru a închide Microsoft Visual Basic pentru aplicații fereastră.

5. Dezactivați modul Design făcând clic pe Dezvoltator > Mod de proiectare. Vedeți captura de ecran:

De acum înainte, de fiecare dată când faceți clic pe butonul de comandă, va fi creat automat un e-mail cu destinatarii, subiectul și corpul specificate. Vă rugăm să trimiteți e-mailul făcând clic pe Trimitere butonul.

notițe: Codul VBA funcționează numai atunci când utilizați Outlook ca program de e-mail.

Trimiteți cu ușurință e-mail prin Outlook pe baza câmpurilor listei de discuții create în Excel:

Trimite emailuri utilitatea Kutools pentru Excel ajută la trimiterea de e-mailuri prin Outlook pe baza câmpurilor listei de discuții create în Excel.
Descărcați și încercați acum! (30- traseu liber de o zi)


Legate de articole:


Cele mai bune instrumente de productivitate Office

Kutools pentru Excel vă rezolvă majoritatea problemelor și vă crește productivitatea cu 80%

  • reutilizarea: Introduceți rapid formule complexe, diagrame și orice ai folosit anterior; Criptați celulele cu parola; Creați o listă de corespondență și trimiteți e-mailuri ...
  • Super Formula Bar (editați cu ușurință mai multe linii de text și formulă); Layout de citire (citiți și editați cu ușurință un număr mare de celule); Lipiți la interval filtrat...
  • Merge celule / rânduri / coloane fără a pierde date; Conținut de celule divizate; Combinați rânduri / coloane duplicate... Prevenirea celulelor duplicate; Comparați gamele...
  • Selectați Duplicat sau Unic Rânduri; Selectați Rânduri goale (toate celulele sunt goale); Super Find și Fuzzy Find în multe cărți de lucru; Selectare aleatorie ...
  • Copie exactă Mai multe celule fără modificarea referinței formulelor; Creați automat referințe la foi multiple; Introduceți gloanțe, Casete de selectare și multe altele ...
  • Extrageți textul, Adăugați text, eliminați după poziție, Eliminați spațiul; Creați și imprimați subtotaluri de paginare; Convertiți conținutul dintre celule și comentarii...
  • Super Filtru (salvați și aplicați scheme de filtrare altor foi); Sortare avansată după lună / săptămână / zi, frecvență și multe altele; Filtru special cu bold, italic ...
  • Combinați cărți de lucru și foi de lucru; Merge Tables pe baza coloanelor cheie; Împărțiți datele în mai multe foi; Conversia în loturi xls, xlsx și PDF...
  • Peste 300 de funcții puternice. Suportă Office / Excel 2007-2021 și 365. Acceptă toate limbile. Implementare ușoară în întreprinderea sau organizația dvs. Funcții complete Probă gratuită de 30 de zile. Garanție de returnare a banilor de 60 de zile.
fila kte 201905

Fila Office aduce interfața cu file în Office și vă face munca mult mai ușoară

  • Activați editarea și citirea cu file în Word, Excel, PowerPoint, Publisher, Access, Visio și Project.
  • Deschideți și creați mai multe documente în filele noi ale aceleiași ferestre, mai degrabă decât în ​​ferestrele noi.
  • Vă crește productivitatea cu 50% și reduce sute de clicuri de mouse pentru dvs. în fiecare zi!
fundul officetab
Comentarii (73)
Evaluat 3.5 din 5 · evaluări 1
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, caut să trimit date dintr-un tabel pivot, mă puteți ajuta
Acest comentariu a fost redus la minimum de moderatorul de pe site
Este posibil să scrieți scriptul astfel încât atunci când faceți clic pe buton, acesta să se atașeze la e-mail ca mai sus, dar să elimine și butonul? astfel încât copia fișierului trimis prin e-mail să nu mai aibă butonul pe ea?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Chiar sub „.Body = xMailBody” adăugați următoarele
.Atașamente.Adăugați ActiveWorkbook.FullName
Acest comentariu a fost redus la minimum de moderatorul de pe site
Salut Danie.

Am adăugat porțiunea așa cum ați spus, dar e-mailul cu registrul de lucru atașat încă mai are butoanele activate.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, este posibil să-l configurez astfel încât să nu trebuie să apăs pe trimitere - trimite automat e-mailul?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună,
Vă rugăm să înlocuiți linia .Afișare cu .Trimite codul VBA de mai sus.
Acest comentariu a fost redus la minimum de moderatorul de pe site
generează doar un e-mail și va continua să suprascrie conținutul în loc să deschidă mai multe schițe de e-mail.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună tuturor, în primul rând, vă mulțumesc, această postare este foarte utilă și funcționează pentru atașament. Acest lucru funcționează pentru mine, dar nu sunt salvate actualizări în foaia pe care trebuie să apăsați butonul de salvare. Aș dori ca atașamentul să aibă tot ce se află în prezent în foaia Excel.

Pot realiza acest lucru folosind funcția Excel încorporată de e-mail, dar am vrut un buton, deoarece trebuie să codific adresa de e-mail specifică.

Deci, pe scurt, aș dori să știu:

Aș dori să știu dacă există o modalitate de a: după ce un utilizator deschide registrul de lucru excel și a făcut modificări dacă butonul va păstra atașamentul cu actualizările?
Acest comentariu a fost redus la minimum de moderatorul de pe site
O zi buna,
Codul a fost optimizat. Vă rugăm să încercați și vă mulțumesc pentru comentariu.

Sub CommandButton privat 1_Click()
„Actualizat de Extendoffice 2017/9/14
Dim xOutApp ca obiect
Dim xOutMail ca obiect
Dim xMailBody ca șir
La data de eroare CV următoare
Setați xOutApp = CreateObject("Outlook.Application")
Setați xOutMail = xOutApp.CreateItem(0)
ActiveWorkbook.Salvare
xMailBody = „Conținutul corpului” & vbNewLine & vbNewLine & _
„Aceasta este linia 1” & vbNewLine & _
„Aceasta este linia 2”
La data de eroare CV următoare
Cu xOutMail
.To = "Adresă de e-mail"
.CC = ""
.BCC = ""
.Subject = "Testați trimiterea e-mailului făcând clic pe buton"
.Body = xMailBody
.Atașamente.Adăugați ActiveWorkbook.FullName
.Afișează sau folosește .Trimite
Se termina cu
La eroare GoTo 0
Setați xOutMail = Nimic
Setați xOutApp = Nimic
End Sub
Acest comentariu a fost redus la minimum de moderatorul de pe site
Cum pot atașa Registrul de lucru activ la e-mail când apăs pe butonul?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună ziua,
Chiar sub „.Body = xMailBody” adăugați următoarele
.Atașamente.Adăugați ActiveWorkbook.FullName
Acest comentariu a fost redus la minimum de moderatorul de pe site
Teria como em vez de enviar a planilha, send as informações em imagem?
Acest comentariu a fost redus la minimum de moderatorul de pe site
folosind acest cod VBA, pot face referire la informații despre celulă din corpul e-mailului? De exemplu, cum aș face referire la valorile celulelor la codul de mai jos?

xMailBody = „Conținutul corpului” & vbNewLine & vbNewLine & _
„Aceasta este linia 1” & vbNewLine & _
„Aceasta este linia 2”

De asemenea, folosind codul (.TO = „adresă de e-mail”). cum pot să fac ca „adresa de e-mail” să introducă o adresă de e-mail dintr-o celulă din coloana de lângă ea.


Multumesc,
Acest comentariu a fost redus la minimum de moderatorul de pe site
Este posibil să adăugați un al doilea buton de e-mail în aceeași foaie de lucru? Când încerc să o fac, se conectează la codul de pe butonul original de e-mail. Mulțumiri.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună,
Trebuie să atribuiți coduri diferite fiecărui buton.
Acest comentariu a fost redus la minimum de moderatorul de pe site
folosind acest cod VBA, pot face referire la informații despre celulă din corpul e-mailului? De exemplu, cum aș face referire la valorile celulelor la codul de mai jos?

xMailBody = „Conținutul corpului” & vbNewLine & vbNewLine & _
„Aceasta este linia 1” & vbNewLine & _
„Aceasta este linia 2”

Multumesc,
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună Glenn,
Vă rugăm să aplicați următorul cod. Multumesc pentru comentariu.
xMailBody = [B5]
Acest comentariu a fost redus la minimum de moderatorul de pe site
Este posibil, în loc să trimiteți atașamentul în e-mail, să trimiteți un hyperlink către fișier (situat pe SharePoint)?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună Laurie,
Nu te pot ajuta cu asta. Multumesc pentru comentariu.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Pot face referire la valoarea dintr-o celulă din subiectul cu șir? O variantă a celor de mai jos?

.Subject = „Eveniment nou:” și țintă.Adresă = „$B$38”
Acest comentariu a fost redus la minimum de moderatorul de pe site
Salut Abi,
Schimbați codul în .Subject = „Eveniment nou:” și [B38].
Multumesc pentru comentariu.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Salut,
Ma poate ajuta cineva cu urmatoarea cerinta?
Am o foaie Excel cu două liste drop-down.

1 listă derulantă - listă de departamente

2 listă derulantă - categorie

Ce vreau este când selectez un departament și o categorie din liste; (de exemplu, dacă selectez „vânzări” în departament și „raport lunar” în categorie)

Trebuie să trimit prin e-mail versiunea PDF a acelei foi de lucru echipei de vânzări cu subiectul e-mailului este raportul lunar.

Dacă selectez „producție” din lista de departamente, e-mailul ar trebui să ajungă la un grup de oameni din producție.

Apreciez daca ma puteti ajuta in acest sens

Rasike
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună Rasike,
Îmi pare rău că nu te pot ajuta cu asta. Bine ați venit să postați orice întrebare pe forumul nostru: https://www.extendoffice.com/forum.html pentru a obține mai mult suport Excel din partea profesioniștilor Excel sau alți fani ai Excel.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună,

Cum pot face ca e-mailul să-mi adauge automat semnătura din Outlook?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Buna John,
Codul VBA de mai jos vă poate ajuta să rezolvați problema. Multumesc pentru comentariul tau.

Sub CommandButton privat 1_Click()
„Actualizat de Extendoffice 2019/6/26
Dim xOutApp ca obiect
Dim xOutMail ca obiect
La data de eroare CV următoare
Setați xOutApp = CreateObject("Outlook.Application")
Setați xOutMail = xOutApp.CreateItem(0)
Cu xOutMail
.Afișează sau folosește .Trimite
.To = "Adresă de e-mail"
.CC = ""
.BCC = ""
.Subject = "Testați trimiterea e-mailului făcând clic pe buton"
.HTMLBody = „Acesta este un e-mail de test trimis în Excel” & „
" & .HTMLBody
'.Trimite
Se termina cu
La eroare GoTo 0
Setați xOutMail = Nimic
Setați xOutApp = Nimic
End Sub
Acest comentariu a fost redus la minimum de moderatorul de pe site
Trebuie să fii utilizator Excel când apăsați butonul pentru a trimite un e-mail? sau doar persoana care primește e-mailul trebuie să fie un utilizator Outlook?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună ziua,
Deoarece e-mailul trebuie trimis prin Outlook după ce faceți clic pe butonul din Excel, trebuie să aveți Outlook instalat pe computer pentru ca acesta să funcționeze.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Vreau să trimit foaia de lucru Excel prin e-mail, dar nu o trimite. Cum scrieți codul pentru a trimite documentul ca e-mail
Acest comentariu a fost redus la minimum de moderatorul de pe site
Buna Marcus,
Codul VBA de mai jos vă poate ajuta să rezolvați problema.

Sub SendWorkSheet()
„Actualizare 20190626
Dim xFile ca șir
Dim xFormat As Long
Dim Wb As Workbook
Dim Wb2 ca registru de lucru
Dim FilePath ca șir
Dim FileName ca șir
Dim OutlookApp ca obiect
Dim OutlookMail ca obiect
La data de eroare CV următoare
Application.ScreenUpdating = Fals
Set Wb = Application.ActiveWorkbook
ActiveSheet.Copy
Setați Wb2 = Application.ActiveWorkbook
Selectați Case Wb.FileFormat
Caz xlOpenXMLWorkbook:
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
Caz xlOpenXMLWorkbookMacroEnabled:
Dacă Wb2.HasVBProject Atunci
xFile = ".xlsm"
xFormat = xlOpenXMLWorkbookMacroEnabled
Altfel
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
Final, dacă
Cazul Excel8:
xFile = ".xls"
xFormat = Excel8
Cazul xlExcel12:
xFile = ".xlsb"
xFormat = xlExcel12
Selectare sfârșit
FilePath = Environ$("temp") & "\"
FileName = Wb.Name & Format (Acum, „zz-mmm-aa h-mm-ss”)
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
Wb2.SaveAs FilePath & FileName & xFile, FileFormat:=xFormat
Cu OutlookMail
.To = "skyyang @extendoffice.com "
.CC = ""
.BCC = ""
.Subject = "caracteristici kte"
.Body = "Vă rugăm să verificați și să citiți acest document."
.Atașamente.Add Wb2.FullName
.Afişa
'.Trimite
Se termina cu
Wb2.Închidere
Omorâți FilePath și FileName și xFile
Setați OutlookMail = Nimic
Setați OutlookApp = Nimic
Application.ScreenUpdating = Adevărat
End Sub
Acest comentariu a fost redus la minimum de moderatorul de pe site
Cum pot atașa Foaia de lucru activă la e-mail atunci când apăs pe butonul?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună Grant,
Faceți clic dreapta pe butonul și selectați Vizualizare cod, apoi copiați codul de mai jos între liniile Private Sub și End Sub. Sper că pot ajuta. Multumesc pentru comentariul tau.

Dim xFile ca șir
Dim xFormat As Long
Dim Wb As Workbook
Dim Wb2 ca registru de lucru
Dim FilePath ca șir
Dim FileName ca șir
Dim OutlookApp ca obiect
Dim OutlookMail ca obiect
La data de eroare CV următoare
Application.ScreenUpdating = Fals
Set Wb = Application.ActiveWorkbook
ActiveSheet.Copy
Setați Wb2 = Application.ActiveWorkbook
Selectați Case Wb.FileFormat
Caz xlOpenXMLWorkbook:
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
Caz xlOpenXMLWorkbookMacroEnabled:
Dacă Wb2.HasVBProject Atunci
xFile = ".xlsm"
xFormat = xlOpenXMLWorkbookMacroEnabled
Altfel
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
Final, dacă
Cazul Excel8:
xFile = ".xls"
xFormat = Excel8
Cazul xlExcel12:
xFile = ".xlsb"
xFormat = xlExcel12
Selectare sfârșit
FilePath = Environ$("temp") & "\"
FileName = Wb.Name & Format (Acum, „zz-mmm-aa h-mm-ss”)
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
Wb2.SaveAs FilePath & FileName & xFile, FileFormat:=xFormat
Cu OutlookMail
.To = "skyyang @extendoffice.com "
.CC = ""
.BCC = ""
.Subject = "caracteristici kte"
.Body = "Vă rugăm să verificați și să citiți acest document."
.Atașamente.Add Wb2.FullName
.Afişa
'.Trimite
Se termina cu
Wb2.Închidere
Omorâți FilePath și FileName și xFile
Setați OutlookMail = Nimic
Setați OutlookApp = Nimic
Application.ScreenUpdating = Adevărat
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună,

Există vreo modalitate de a schimba numele fișierului la data curentă când se atașează la e-mail?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună,

Am lucrat la o foaie, dar nu o pot termina. Sper ca ma puteti ajuta :)

Fișierul propriu-zis trebuie să fie un xltm (șablon) și trebuie să atașeze foaia în sine în e-mail.

Și o semnătură automată, atunci aș fi foarte fericit.

Multumesc anticipat /Dr. Nang
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, rulez o foaie de calcul cu 80 de conturi de bar individuale și am folosit codul VBA pe această pagină cu mult succes. Cu toate acestea, în corpul e-mailului, aș dori să copiez și să lipesc intervalul specific de celule ale unui cont atunci când trimit, astfel încât clientul să aibă un istoric. Puteți ajuta cu codul VBA pentru asta?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Salut! Mulțumesc mult pentru asta. A fost un ajutor fantastic.

Este posibil să trimiteți o foaie de lucru activă apăsând un buton în loc de registrul de lucru complet?

Multumesc!
Nu există comentarii postate aici încă
Încărcați mai
Lăsa comentarii
Postare ca invitat
×
Evaluează această postare:
0   Caractere
Locații sugerate

Urmărește-ne

Copyright © 2009 - www.extendoffice.com. | Toate drepturile rezervate. Cu sprijinul ExtendOffice. | Harta site-ului
Microsoft și sigla Office sunt mărci comerciale sau mărci comerciale înregistrate ale Microsoft Corporation în Statele Unite și / sau în alte țări.
Protejat de Sectigo SSL