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

Hur skickar jag e-post om du klickar på knappen i Excel?

Om du antar att du måste skicka e-post via Outlook genom att klicka på en knapp i Excel-kalkylbladet, hur kan du göra det? Denna artikel kommer att introducera en VBA-metod för att uppnå den i detaljer.

Skicka e-post om du klickar på knappen med VBA-kod


Skicka e-post om du klickar på knappen med VBA-kod

Gör så här för att skicka ett e-postmeddelande via Outlook om du klickar på en kommandoknapp i Excel-arbetsboken.

1. Sätt in en kommandoknapp i kalkylbladet genom att klicka Utvecklare > Insert > Kommandoknapp (ActiveX-kontroll). Se skärmdump:

2. Högerklicka på den infogade kommandoknappen och klicka sedan på Visa kod från högerklickningsmenyn enligt nedanstående skärmdump.

3. I öppningen Microsoft Visual Basic för applikationer fönstret, ersätt den ursprungliga koden i kodfönstret med följande VBA-skript.

VBA-kod: Skicka e-post om du klickar på knappen i 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

Anmärkningar:

1). Ändra e-postadressen som du behöver i xMailBody raden i koden.

2). Ersätt E-postadress med mottagarens e-postadress i raden .To = "E-postadress".

3). Ange mottagare för kopior och kopior som du behöver i .CC = "" och .Bcc = "" sektioner.

4). Ändra e-postämnet i raden .Subject = "Testa e-post skicka genom att klicka på knappen".

4. tryck på andra + Q samtidigt för att stänga Microsoft Visual Basic för applikationer fönster.

5. Stäng av designläget genom att klicka på Utvecklare > Designläge. Se skärmdump:

Från och med nu, varje gång du klickar på kommandoknappen, skapas ett e-postmeddelande automatiskt med angivna mottagare, ämne och kropp. Skicka e-postmeddelandet genom att klicka på Skicka knapp.

Anmärkningar: VBA-koden fungerar bara när du använder Outlook som ditt e-postprogram.

Skicka enkelt e-post via Outlook baserat på fälten i den skapade e-postlistan i Excel:

Du har nu möjlighet Skicka e-mail nytta av Kutools för Excel hjälper till att skicka e-post via Outlook baserat på fälten i den skapade e-postlistan i Excel.
Ladda ner och prova nu! (30- dag gratis spår)


Relaterade artiklar:


De bästa Office-produktivitetsverktygen

Kutools för Excel löser de flesta av dina problem och ökar din produktivitet med 80%

  • återanvändning: Sätt snabbt i komplexa formler, diagram och allt som du har använt tidigare; Kryptera celler med lösenord; Skapa e-postlista och skicka e-post ...
  • Super Formula Bar (enkelt redigera flera rader med text och formel); Läslayout (enkelt läsa och redigera ett stort antal celler); Klistra in i filtrerat intervall...
  • Sammanfoga celler / rader / kolumner utan att förlora data; Delat cellinnehåll; Kombinera duplicerade rader / kolumner... Förhindra duplicerade celler; Jämför intervall...
  • Välj Duplicera eller Unikt Rader; Välj tomma rader (alla celler är tomma); Super Find och Fuzzy Find i många arbetsböcker; Slumpmässigt val ...
  • Exakt kopia Flera celler utan att ändra formelreferens; Skapa referenser automatiskt till flera ark; Sätt in kulor, Kryssrutor och mer ...
  • Extrahera text, Lägg till text, ta bort efter position, Ta bort mellanslag; Skapa och skriva ut personsökningstalsatser; Konvertera mellan celler innehåll och kommentarer...
  • Superfilter (spara och tillämpa filterscheman på andra ark); Avancerad sortering efter månad / vecka / dag, frekvens och mer; Specialfilter av fet, kursiv ...
  • Kombinera arbetsböcker och arbetsblad; Sammanfoga tabeller baserat på nyckelkolumner; Dela data i flera ark; Batchkonvertera xls, xlsx och PDF...
  • Mer än 300 kraftfulla funktioner. Stöder Office / Excel 2007-2021 och 365. Stöder alla språk. Enkel implementering i ditt företag eller organisation. Fullständiga funktioner 30 dagars gratis provperiod. 60 dagars pengarna tillbaka-garanti.
kte-flik 201905

Fliken Office ger ett flikgränssnitt till Office och gör ditt arbete mycket enklare

  • Aktivera flikredigering och läsning i Word, Excel, PowerPoint, Publisher, Access, Visio och Project.
  • Öppna och skapa flera dokument i nya flikar i samma fönster, snarare än i nya fönster.
  • Ökar din produktivitet med 50 % och minskar hundratals musklick för dig varje dag!
officetab botten
Sortera kommentarer efter
Kommentarer (73)
Klassad 3.5 av 5 · 1 betyg
Denna kommentar minimerades av moderatoren på webbplatsen
Hej, jag funderar på att skicka data från en pivottabellsdata, kan du hjälpa till
Denna kommentar minimerades av moderatoren på webbplatsen
Är det möjligt att skriva skriptet så att när du klickar på knappen så bifogar det sig självt till e-postmeddelandet enligt ovan men tar bort knappen också? så att kopian av filen som skickas via e-post inte längre har knappen på sig?
Denna kommentar minimerades av moderatoren på webbplatsen
Precis under ".Body = xMailBody" lägg till följande
.Attachments.Add ActiveWorkbook.FullName
Denna kommentar minimerades av moderatoren på webbplatsen
Hej Danie.

Jag lade till delen som du sa, men e-postmeddelandet med den bifogade arbetsboken har fortfarande knapparna på.
Denna kommentar minimerades av moderatoren på webbplatsen
hej är det möjligt att ställa in det så att jag inte behöver trycka på skicka - det skickar automatiskt mailet????
Denna kommentar minimerades av moderatoren på webbplatsen
Hej,
Byt ut raden .Display med .Send in ovan VBA-kod.
Denna kommentar minimerades av moderatoren på webbplatsen
den genererar bara ett e-postmeddelande och kommer att fortsätta skriva över innehållet istället för att öppna flera e-postutkast.
Denna kommentar minimerades av moderatoren på webbplatsen
Hej alla, först ett stort tack, det här inlägget är mycket användbart och fungerar för bilagan. Detta fungerar för mig men inga uppdateringar sparas i arket du måste trycka på spara-knappen. Jag skulle vilja att bilagan ska ha det som för närvarande finns i excel-arket.

Jag kan åstadkomma detta genom att använda den inbyggda e-postfunktionen i Excel men jag ville ha en knapp eftersom jag behöver hårdkoda den specifika e-postadressen.

Så sammanfattningsvis skulle jag vilja veta:

Jag skulle vilja veta om det finns ett sätt att: efter att en användare öppnar excel-arbetsboken och gjort ändringar om knappen kommer att behålla bilagan med uppdateringarna?
Denna kommentar minimerades av moderatoren på webbplatsen
God dag,
Koden har optimerats. Prova gärna och tack för din kommentar.

Privat underkommando-knappen1_Click ()
'Uppdaterad av Extendoffice 2017/9/14
Dim xOutApp som objekt
Dim xOutMail som objekt
Dim xMailBody As String
On Error Resume Next
Ställ in xOutApp = CreateObject("Outlook.Application")
Ställ in xOutMail = xOutApp.CreateItem(0)
ActiveWorkbook.Save
xMailBody = "Body content" & vbNewLine & vbNewLine & _
"Detta är linje 1" & vbNewLine & _
"Detta är linje 2"
On Error Resume Next
Med xOutMail
.To = "E-postadress"
.CC = ""
.BCC = ""
.Subject = "Testa e-post skicka genom att klicka på knappen"
.Body = xMailBody
.Attachments.Add ActiveWorkbook.FullName
.Visa 'eller använd .Send
Sluta med
På Fel GoTo 0
Ställ in xOutMail = Ingenting
Ställ in xOutApp = Ingenting
End Sub
Denna kommentar minimerades av moderatoren på webbplatsen
Hur kan jag bifoga den aktiva arbetsboken till e-postmeddelandet när jag trycker på knappen?
Denna kommentar minimerades av moderatoren på webbplatsen
God dag,
Precis under ".Body = xMailBody" lägg till följande
.Attachments.Add ActiveWorkbook.FullName
Denna kommentar minimerades av moderatoren på webbplatsen
Teria como em vez de enviar a planilha, enviar as informações em imagem?
Denna kommentar minimerades av moderatoren på webbplatsen
med den här VBA-koden, kan jag referera till cellinformation i e-postmeddelandet? Hur skulle jag till exempel referera cellvärden till koden nedan?

xMailBody = "Body content" & vbNewLine & vbNewLine & _
"Detta är linje 1" & vbNewLine & _
"Detta är linje 2"

Använd också koden (.TO = "e-postadress"). hur kan jag få "e-postadressen" att dra in en e-postadress från en cell i kolumnen bredvid.


Tack,
Denna kommentar minimerades av moderatoren på webbplatsen
Är det möjligt att lägga till en andra e-postknapp inom samma kalkylblad? När jag försöker göra det ansluter den till koden från den ursprungliga e-postknappen. tack.
Denna kommentar minimerades av moderatoren på webbplatsen
Hej,
Du måste tilldela olika koder till varje knapp.
Denna kommentar minimerades av moderatoren på webbplatsen
med den här VBA-koden, kan jag referera till cellinformation i e-postmeddelandet? Hur skulle jag till exempel referera cellvärden till koden nedan?

xMailBody = "Body content" & vbNewLine & vbNewLine & _
"Detta är linje 1" & vbNewLine & _
"Detta är linje 2"

Tack,
Denna kommentar minimerades av moderatoren på webbplatsen
Hej Glenn,
Använd följande kod. Tack för din kommentar.
xMailBody = [B5]
Denna kommentar minimerades av moderatoren på webbplatsen
Är det möjligt att istället för att skicka bilagan i e-postmeddelandet, skicka en hyperlänk till filen (finns på SharePoint)?
Denna kommentar minimerades av moderatoren på webbplatsen
Hej Laurie,
Kan inte hjälpa dig med det. Tack för din kommentar.
Denna kommentar minimerades av moderatoren på webbplatsen
Kan jag referera till värdet i en cell i ämnet med sträng? Någon variant av nedanstående?

.Subject = "Ny händelse:" & Target.Address = "$B$38"
Denna kommentar minimerades av moderatoren på webbplatsen
Hej Abi,
Ändra koden till .Subject = "Ny händelse:" & [B38].
Tack för din kommentar.
Denna kommentar minimerades av moderatoren på webbplatsen
Hej,
Kan någon hjälpa mig med följande krav?
Jag har ett excelark med två rullgardinslistor.

1 rullgardinslista-lista över avdelningar

2 rullgardinslista-kategori

Det jag vill är när jag väljer en avdelning och kategori från listorna; (till exempel om jag väljer "försäljning" i avdelning och "månadsrapport" i kategori)

Jag måste e-posta PDF-versionen av det arbetsbladet till säljteamet med e-postmeddelandets ämnesrapport.

Om jag väljer "produktion" från avdelningslistan ska mejlet gå till en grupp personer i produktionen.

Jag uppskattar om du kan hjälpa mig med detta

Rasike
Denna kommentar minimerades av moderatoren på webbplatsen
Hej Rasike,
Jag kan tyvärr inte hjälpa dig med det. Välkommen att ställa alla frågor i vårt forum: https://www.extendoffice.com/forum.html för att få mer Excel-stöd från Excel-proffs eller andra Excel-fans.
Denna kommentar minimerades av moderatoren på webbplatsen
Hej,

Hur kan jag få posten att automatiskt lägga till min signatur från outlook?
Denna kommentar minimerades av moderatoren på webbplatsen
Hej John,
VBA-koden nedan kan hjälpa dig att lösa problemet. Tack för din kommentar.

Privat underkommando-knappen1_Click ()
'Uppdaterad av Extendoffice 2019/6/26
Dim xOutApp som objekt
Dim xOutMail som objekt
On Error Resume Next
Ställ in xOutApp = CreateObject("Outlook.Application")
Ställ in xOutMail = xOutApp.CreateItem(0)
Med xOutMail
.Visa 'eller använd .Send
.To = "E-postadress"
.CC = ""
.BCC = ""
.Subject = "Testa e-post skicka genom att klicka på knappen"
.HTMLBody = "Detta är ett testmeddelande som skickas i Excel" & "
" & .HTMLBody
'.Skicka
Sluta med
På Fel GoTo 0
Ställ in xOutMail = Ingenting
Ställ in xOutApp = Ingenting
End Sub
Denna kommentar minimerades av moderatoren på webbplatsen
Måste du vara en excel-användare när du trycker på knappen för att skicka ett e-postmeddelande? eller måste bara personen som tar emot e-postmeddelandet vara en outlook-användare?
Denna kommentar minimerades av moderatoren på webbplatsen
God dag,
Eftersom e-postmeddelandet måste skickas via Outlook efter att du klickat på knappen i Excel måste du ha Outlook installerat på din dator för att det ska fungera.
Denna kommentar minimerades av moderatoren på webbplatsen
Jag vill skicka excel-arbetsbladet i e-postmeddelandet men det skickar det inte. Hur skriver man kod för att skicka dokument som e-post
Denna kommentar minimerades av moderatoren på webbplatsen
Hej Marcus,
VBA-koden nedan kan hjälpa dig att lösa problemet.

Sub SendWorkSheet()
'Uppdatering 20190626
Dim xFile As String
Dim xFormat As Long
Dim Wb Som arbetsbok
Dim Wb2 Som arbetsbok
Dimma filsökväg som sträng
Dim filnamn som sträng
Dimma OutlookApp som objekt
Dimma OutlookMail som objekt
On Error Resume Next
Application.ScreenUpdating = False
Ställ in Wb = Application.ActiveWorkbook
ActiveSheet.Copy
Ställ in Wb2 = Application.ActiveWorkbook
Välj Case Wb.FileFormat
Case xlOpenXMLWorkbook:
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
Fall xlOpenXMLWorkbookMacroEnabled:
Om Wb2.HasVBProject Då
xFile = ".xlsm"
xFormat = xlOpenXMLWorkbookMacroEnabled
annars
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
End If
Fall Excel8:
xFile = ".xls"
xFormat = Excel8
Fodral xlExcel12:
xFile = ".xlsb"
xFormat = xlExcel12
Avsluta Välj
FilePath = Environ$("temp") & "\"
Filnamn = Wb.Name & Format(Nu, "dd-mmm-åå h-mm-ss")
Ställ in OutlookApp = CreateObject("Outlook.Application")
Ställ in OutlookMail = OutlookApp.CreateItem(0)
Wb2.SaveAs FilePath & FileName & xFile, FileFormat:=xFormat
Med OutlookMail
.To = "skyyang @extendoffice.com "
.CC = ""
.BCC = ""
.Subject = "kte-funktioner"
.Body = "Kontrollera och läs detta dokument."
.Attachments.Add Wb2.FullName
.Visa
'.Skicka
Sluta med
Wb2.Stäng
Döda FilePath & FileName & xFile
Ställ in OutlookMail = Ingenting
Ställ in OutlookApp = Ingenting
Application.ScreenUpdating = True
End Sub
Denna kommentar minimerades av moderatoren på webbplatsen
Hur kan jag bifoga det aktiva arbetsbladet till e-postmeddelandet när jag trycker på knappen?
Denna kommentar minimerades av moderatoren på webbplatsen
Hej Grant,
Vänligen högerklicka på knappen och välj Visa kod, kopiera sedan nedanstående kod mellan den privata under- och slutunderraden. Hoppas jag kan hjälpa till. Tack för din kommentar.

Dim xFile As String
Dim xFormat As Long
Dim Wb Som arbetsbok
Dim Wb2 Som arbetsbok
Dimma filsökväg som sträng
Dim filnamn som sträng
Dimma OutlookApp som objekt
Dimma OutlookMail som objekt
On Error Resume Next
Application.ScreenUpdating = False
Ställ in Wb = Application.ActiveWorkbook
ActiveSheet.Copy
Ställ in Wb2 = Application.ActiveWorkbook
Välj Case Wb.FileFormat
Case xlOpenXMLWorkbook:
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
Fall xlOpenXMLWorkbookMacroEnabled:
Om Wb2.HasVBProject Då
xFile = ".xlsm"
xFormat = xlOpenXMLWorkbookMacroEnabled
annars
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
End If
Fall Excel8:
xFile = ".xls"
xFormat = Excel8
Fodral xlExcel12:
xFile = ".xlsb"
xFormat = xlExcel12
Avsluta Välj
FilePath = Environ$("temp") & "\"
Filnamn = Wb.Name & Format(Nu, "dd-mmm-åå h-mm-ss")
Ställ in OutlookApp = CreateObject("Outlook.Application")
Ställ in OutlookMail = OutlookApp.CreateItem(0)
Wb2.SaveAs FilePath & FileName & xFile, FileFormat:=xFormat
Med OutlookMail
.To = "skyyang @extendoffice.com "
.CC = ""
.BCC = ""
.Subject = "kte-funktioner"
.Body = "Kontrollera och läs detta dokument."
.Attachments.Add Wb2.FullName
.Visa
'.Skicka
Sluta med
Wb2.Stäng
Döda FilePath & FileName & xFile
Ställ in OutlookMail = Ingenting
Ställ in OutlookApp = Ingenting
Application.ScreenUpdating = True
Denna kommentar minimerades av moderatoren på webbplatsen
Hej,

Finns det något sätt att ändra filnamnet till det aktuella datumet när det bifogas e-postmeddelandet?
Denna kommentar minimerades av moderatoren på webbplatsen
Hej,

Jag har arbetat på ett ark, men jag kan inte avsluta det. Jag hoppas att du kan hjälpa mig :)

Själva filen måste vara en xltm (mall) och den måste bifoga själva arket i posten.

Och en automatisk signatur, då skulle jag bli väldigt glad.

Tack på förhand /Dr. Nang
Denna kommentar minimerades av moderatoren på webbplatsen
Hej, jag kör ett kalkylblad med 80 individuella streckkonton och har använt VBA-kod på denna sida med stor framgång. Men i brödtexten i e-postmeddelandet skulle jag vilja kopiera och klistra in det specifika cellområdet för ett konto när jag skickar så att klienten kan ha en historik. Kan du hjälpa till med VBA-koden för detta?
Denna kommentar minimerades av moderatoren på webbplatsen
Hej! Tack så mycket för detta. Det har varit fantastisk hjälp.

Är det möjligt att skicka ett aktivt arbetsblad genom att trycka på en knapp istället för hela arbetsboken?

Tack!
Det finns inga kommentarer här ännu
Ladda fler
Lämna dina kommentarer
Postar som gäst
×
Betygsätt detta inlägg:
0   Tecken
Föreslagna platser

Följ oss

Copyright © 2009 - www.extendoffice.com. | Alla rättigheter förbehållna. Drivs av ExtendOffice. | | Sitemap
Microsoft och Office-logotypen är varumärken eller registrerade varumärken som tillhör Microsoft Corporation i USA och / eller andra länder.
Skyddad av Sectigo SSL