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

Hur skickar / skickar jag cellutbud via Outlook från Excel?

Har du någonsin drabbats av ett problem som efter att ha avslutat en rapport i ett kalkylblad, och du måste skicka till ett antal celler i det här kalkylbladet som innehåller viktiga data till din specifika mottagare. Finns det några snabba sätt för dig att skicka det här intervallet från Excel utan att öppna Outlook?

Skicka cellintervall som bilaga från Excel med VBA-kod

Skicka cellintervall som kropp från Excel med VBA-kod


pil blå höger bubblaSkicka cellintervall som bilaga från Excel med VBA-kod

Följande VBA-kod kan hjälpa dig att skicka ditt valda intervall som bilaga i Excel. Gör så här:

1. Öppna arbetsboken och håll ned ALT + F11 nycklar för att öppna Microsoft Visual Basic for Applications-fönstret.

2. Klicka Insert > Modulernaoch klistra in följande kod i Modulfönster.

VBA-kod: skicka cellintervall som bilaga från Excel

Sub SendRange()
'Update 20131209
Dim xFile As String
Dim xFormat As Long
Dim Wb As Workbook
Dim Wb2 As Workbook
Dim Ws As Worksheet
Dim FilePath As String
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
Dim WorkRng As Range
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set Wb = Application.ActiveWorkbook
Wb.Worksheets.Add
Set Ws = Application.ActiveSheet
WorkRng.Copy Ws.Cells(1, 1)
Ws.Copy
Set Wb2 = Application.ActiveWorkbook
Select Case Wb.FileFormat
Case xlOpenXMLWorkbook:
    xFile = ".xlsx"
    xFormat = xlOpenXMLWorkbook
Case xlOpenXMLWorkbookMacroEnabled:
    If Wb2.HasVBProject Then
        xFile = ".xlsm"
        xFormat = xlOpenXMLWorkbookMacroEnabled
    Else
        xFile = ".xlsx"
        xFormat = xlOpenXMLWorkbook
    End If
Case Excel8:
    xFile = ".xls"
    xFormat = Excel8
Case xlExcel12:
    xFile = ".xlsb"
    xFormat = xlExcel12
End Select
FilePath = Environ$("temp") & "\"
FileName = Wb.Name & Format(Now, "dd-mmm-yy h-mm-ss")
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
Wb2.SaveAs FilePath & FileName & xFile, FileFormat:=xFormat
With OutlookMail
    .To = "skyyang@extendoffice.com"
    .CC = ""
    .BCC = ""
    .Subject = "information of kte"
    .Body = "hello, please check and read this document. "
    .Attachments.Add Wb2.FullName
    .Send
End With
Wb2.Close
Kill FilePath & FileName & xFile
Set OutlookMail = Nothing
Set OutlookApp = Nothing
Ws.Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

Anmärkningar: I ovanstående kod kan du ändra följande information efter eget behov.

  • .To = "skyyang @extendoffice.com "
  • .CC = ""
  • .BCC = ""
  • .Subject = "information om kte"
  • .Body = "hej, kontrollera och läs det här dokumentet."

3. Klicka sedan F5 för att köra den här koden, och en snabbruta dyker upp för att påminna dig om att välja ett intervall som du vill skicka. Se skärmdump:

doc-send-range1

4. Klicka sedan OK, och en snabbruta visas, efter att förloppsindikatorn är klar klickar du på Tillåt, och sedan har det specifika cellområdet skickats till din mottagare som en bilaga.

doc-send-range2


pil blå höger bubblaSkicka cellintervall som kropp från Excel med VBA-kod

Om du vill skicka ett visst intervall som en del av meddelandetexten från Excel kan du också använda följande VBA-kod för att lösa det.

Kutools för Excel, med mer än 120 praktiska funktioner, underlättar dina jobb. 

1. Aktivera kalkylbladet och håll ned ALT + F11 nycklar för att öppna Microsoft Visual Basic for Applications-fönstret.

2. Klicka Insert > Modulernaoch klistra in följande kod i Modulfönster.

VBA-kod: skicka cellintervall som kropp från Excel

Sub EmailRange()
'Update 20131209
Dim WorkRng As Range
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
Application.ScreenUpdating = False
WorkRng.Select
ActiveWorkbook.EnvelopeVisible = True
With ActiveSheet.MailEnvelope
    .Introduction = "Please read this email."
    .Item.To = "skyyang@extendoffice.com"
    .Item.Subject = "information of kte"
    .Item.Send
End With
Application.ScreenUpdating = True
End Sub

Notera: I ovanstående kod kan du ändra följande information efter dina behov.

  • .Introduction = "Läs detta e-postmeddelande."
  • .Item.To = "skyyang @extendoffice.com "
  • .Item.Subject = "information om kte"

3. Klicka sedan F5 för att köra den här koden och en snabbruta dyker upp för att påminna dig om att välja ett intervall som du vill skicka.

doc-send-range1

4. Klicka sedan på OK, och en snabbruta visas, efter att förloppsindikatorn är klar klickar du på Tillåt, och sedan har det specifika cellområdet skickats till din mottagare som meddelandetext.

doc-send-range2

Anmärkningar:

1. Dessa koder är endast tillgängliga när Outlook är ditt e-postprogram.

2. Efter att ha skickat det aktuella kalkylbladet kan du gå till din Outlook för att se till om e-postmeddelandet har skickats.


Relaterade artiklar:

Hur skickar jag bara kalkylblad via Outlook från Excel?

Hur skickar jag aktuell arbetsbok via Outlook från Excel?


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-2019 och 365. Stöder alla språk. Enkel distribution 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 åt dig varje dag!
officetab botten
Sortera kommentarer efter
Kommentarer (26)
Inga betyg än. Bli först med att betygsätta!
Denna kommentar minimerades av moderatoren på webbplatsen
Hej, jag använder Marco som väljer de celler som krävs för att skicka e-post. jag har kombinerat detta med ett annat makro så att jag får det att öppna ett "nytt e-postmeddelande" mitt problem är nu att om du lägger in mycket information i en cell så tar det bara iformaiton du ser inte all information i den cellen några idéer ?? tack så mycket för din hjälp med detta hejarop
Denna kommentar minimerades av moderatoren på webbplatsen
Hej alla
Jag har ett projekt att välja intervall i blad 1 som ska skickas med e-post en efter en till många e-postadresser skrivna i blad 2 i kolumn A och om kolumn B är tom med ett visst ämne och efter att ha skickat skriver han i blad 2 kolumn b skickas
Och att vänta 10 sekunder för att skicka nästa e-postmeddelande som serverns tillstånd
Snälla någon som hjälper mig?   
Denna kommentar minimerades av moderatoren på webbplatsen
Hej, kan du berätta för mig hur man lägger till signatur och andra introduktionsrad till detta mail för det andra programmet. Tack på förhand.
Denna kommentar minimerades av moderatoren på webbplatsen
trevligt & användbart ,bra jobbat!!!
Denna kommentar minimerades av moderatoren på webbplatsen
Mycket användbart. Tack . Jag har en lista över e-postadresser på samma ark. När jag klickade på en e-postadress skickas det valda cellintervallet som bilaga till detta e-postmeddelande. Kan du hjälpa mig med detta? Tack så mycket.
Denna kommentar minimerades av moderatoren på webbplatsen
Hej, mycket bra förklarat. Istället för att skicka en ny arbetsbok kan vi bara kopiera och klistra in det valda intervallet i e-posttexten och skicka. Jag vill inte skicka det valda området som bild. Jag vill skicka som en tabellvy i brödtexten i e-postmeddelandet. Kan vi göra det??
Denna kommentar minimerades av moderatoren på webbplatsen
Tack, det här är väldigt användbart men tänk om jag behöver lägga till en beskrivning i e-postmeddelandet innan jag skickar den. Föreslå koden.
Denna kommentar minimerades av moderatoren på webbplatsen
Hej,
Allt ser bra ut men ger inte gränsen valt intervall, kan du vänligen föreslå.
Denna kommentar minimerades av moderatoren på webbplatsen
Tack så mycket, jag har hittat den här lösningen så länge.
Denna kommentar minimerades av moderatoren på webbplatsen
Utmärkt jobb. Det vore bättre att se detta skickas ut automatiskt. Vad ska jag göra så att det inte leder till ett felmeddelande innan jag fortsätter att skicka?
Denna kommentar minimerades av moderatoren på webbplatsen
kan vi lägga in så många e-postadresser att skicka till?
Denna kommentar minimerades av moderatoren på webbplatsen
Hej, Carey, alla ovanför VBA kan lägga till många e-postadresser (Till, BCC, CC) att skicka till genom att använda ; som separator. Till exempel, .To = "skyyang@extendoffice.com; test1@extendoffice.com; test2@extendoffice.com "
Denna kommentar minimerades av moderatoren på webbplatsen
Jag kan inte kopiera det som fil i ett e-postmeddelande, skicka det per kopia och klistra in i e-postmeddelandet. Vad är det i VBA-koden?
Denna kommentar minimerades av moderatoren på webbplatsen
Hej jag har en tabell inställd som jag vill att personalen ska fylla i och sedan en kommandoknapp som då automatiskt genererar ett e-postmeddelande, dock vill jag att data från tabellen ska finnas i e-posttexten. Finns det en kod för det? 
Tack 
Denna kommentar minimerades av moderatoren på webbplatsen
Hej alla
Jag har ett projekt att välja intervall i blad 1 som ska skickas med e-post en efter en till många e-postadresser skrivna i blad 2 i kolumn A och om kolumn B är tom med ett visst ämne och efter att ha skickat skriver han i blad 2 kolumn b skickas
Och att vänta 10 sekunder för att skicka nästa e-postmeddelande som serverns tillstånd
Snälla någon som hjälper mig?   
Denna kommentar minimerades av moderatoren på webbplatsen
Hej alla
Jag har ett projekt att välja intervall i blad 1 som ska skickas med e-post en efter en till många e-postadresser skrivna i blad 2 i kolumn A och om kolumn B är tom med ett visst ämne och efter att ha skickat skriver han i blad 2 kolumn b skickas
Och att vänta 10 sekunder för att skicka nästa e-postmeddelande som serverns tillstånd
Snälla någon som hjälper mig?   
Denna kommentar minimerades av moderatoren på webbplatsen
Hej, hriad, "om kolumn B är tom med ett visst ämne och efter att ha skickat skriver han i ark 2 kolumn b skickas
Och att vänta 10 sekunder för att skicka nästa e-postmeddelande som serverns tillstånd" Jag förstår inte detta. Berätta om ditt krav igen.
Denna kommentar minimerades av moderatoren på webbplatsen
Hej soligt
Först och främst, tack för din hjälp, eftersom servern ställde ett villkor för att inte skicka många e-postmeddelanden på samma sekund, vill jag vänta 10 sekunder efter att ha skickat första e-postmeddelandet och det följande.
Denna kommentar minimerades av moderatoren på webbplatsen
Hej, hriad, vänligen prova nedanstående kod, efter att ha kört den, kommer det att dyka upp en dialogruta för att välja ett intervall som du vill skicka, sedan skickas det till adresser i ark 2 kolumn A och med ämnena i kolumn B. Var 10:e sekund , skicka till en adress. Du kan ändra koden "Vänligen läs detta e-postmeddelande" efter behov.
Sub SendEmailRange()

'Uppdatera avExtendoffice20220414

Dim WorkRng As Range

Dim xSU, EV As Boolean

Dim xWSh Som arbetsblad

Dim xCount As heltal

Dim xI Som heltal

On Error Resume Next

xTitleId = "KutoolsforExcel"

'välj ett intervall som brukade skicka som brödtext

Set WorkRng = Application.InputBox("Range", xTitleId, Application.Selection.Address, , , , , 8)

Om WorkRng är ingenting, avsluta Sub
WorkRng.Activate
WorkRng.Select

Set xWSh = ActiveWorkbook.Worksheets("Sheet2") 'bladet som innehåller adresser och ämnen

xCount = xWSh.UsedRange.Rows.Count

xSU = Application.ScreenUpdating

EV = ActiveWorkbook.EnvelopeVisible

Application.ScreenUpdating = False


För xI = 1 Till xCount

If (xWSh.Range("A" & xI) = "") Då
Avsluta för
End If
ActiveWorkbook.EnvelopeVisible = Sant
Med ActiveSheet.MailEnvelope
.Introduction = "Läs detta e-postmeddelande."

.Item.To = xWSh.Range("A" & xI)

.Item.Subject = xWSh.Range("B" & xI)

.Item.Send
Sluta med
Om (xI = xCount) Då

Avsluta för

End If

Application.Wait Now + TimeValue("0:00:10")

Nästa


Application.ScreenUpdating = xSU

ActiveWorkbook.EnvelopeVisible = EV

End Sub

Denna kommentar minimerades av moderatoren på webbplatsen
Hej soligt
Många många Tack för din insats.... Tack så mycket
Denna kommentar minimerades av moderatoren på webbplatsen
Kan vi fastställa intervall? i makro själv
Denna kommentar minimerades av moderatoren på webbplatsen
Hej,

Mam plik z 6 arkuszami. Każdy z arkuszy 2-6 musi zostać wysłany do innej grupy odbiorców jako załącznik excela. Czy da się till podpiąć pod 5 przycisków?
Denna kommentar minimerades av moderatoren på webbplatsen
Hej pawerl
För att lösa ditt problem kan artikeln nedan hjälpa dig, kolla in den:

https://www.extendoffice.com/documents/excel/7178-send-each-sheet-to-different-email.html

Tack!
Denna kommentar minimerades av moderatoren på webbplatsen
Tack för det här! Jag ska testa det snart då jag är tillbaka från semestern. Har en fråga till. Har problem med att köra vba-koder genom att använda Activex-knappen (ingen åtgärd alls) även om koden fungerar perfekt i redigeringsläge eller när den körs med ctrl+vald knapp från tangentbordet. Jag har precis börjat vba resa och har nej
anar vad jag gör fel :/
Denna kommentar minimerades av moderatoren på webbplatsen
Hej pawerl
Du behöver bara kopiera och klistra in koden i Microsoft Visual Basic för applikationer fönstret och klicka sedan på run knappen från verktygsfältet enligt skärmbilden nedan: (Anmärkningar: i koden, S1 är cellen innehåller e-postadressen som du vill skicka e-postmeddelandet till. Vänligen ändra dem efter dina behov.)

https://www.extendoffice.com/images/stories/comments/comment-skyyang/doc-send-emails.png

Var god försök igen!
Denna kommentar minimerades av moderatoren på webbplatsen
Hej,

Jag har gjort allt enligt ovan och resultatet är: allt fungerar perfekt förutom knappen :) Bryr mig inte riktigt om detta för tillfället :)

Stort tack!!! Ämnet stängt :)
Det finns inga kommentarer här ännu
Lämna dina kommentarer
Postar som gäst
×
Betygsätt detta inlägg:
0   Tecken
Föreslagna platser