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

Cum să trimiteți / trimiteți prin e-mail gama de celule prin Outlook din Excel?

Ați suferit vreodată o problemă care, după finalizarea unui raport într-o foaie de lucru, și trebuie să trimiteți la o serie de celule din această foaie de lucru care conțin câteva date importante destinatarului dvs. specific. Există modalități rapide de a trimite acest e-mail din Excel fără a deschide Outlook?

Trimiteți o gamă de celule ca atașament din Excel cu cod VBA

Trimiteți gama de celule ca corp din Excel cu cod VBA


săgeată albastru dreapta balonTrimiteți o gamă de celule ca atașament din Excel cu cod VBA

Următorul cod VBA vă poate ajuta să trimiteți gama selectată ca atașament în Excel. Vă rugăm să faceți acest lucru:

1. Deschideți registrul de lucru și apoi țineți apăsat butonul ALT + F11 tastele pentru a deschide Fereastra Microsoft Visual Basic pentru aplicații.

2. Clic Insera > Moduleși lipiți următorul cod în Fereastra modulului.

Cod VBA: trimite gama de celule ca atașament din 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

notițe: În codul de mai sus, puteți schimba următoarele informații în funcție de nevoile dvs.

  • .To = "skyyang @extendoffice.com "
  • .CC = ""
  • .BCC = ""
  • .Subject = "informații despre kte"
  • .Body = "salut, vă rugăm să verificați și să citiți acest document."

3. Apoi apasa F5 pentru a rula acest cod și va apărea o casetă de solicitare pentru a vă reaminti să selectați un interval pe care doriți să îl trimiteți. Vedeți captura de ecran:

doc-send-range1

4. Apoi apasa OK, și va apărea o casetă de prompt, după finalizarea barei de progres, faceți clic pe Permite, iar apoi gama specifică de celule a fost trimisă destinatarului dvs. ca atașament.

doc-send-range2


săgeată albastru dreapta balonTrimiteți gama de celule ca corp din Excel cu cod VBA

Dacă doriți să trimiteți un anumit interval ca parte a corpului mesajului din Excel, puteți aplica, de asemenea, următorul cod VBA pentru a-l rezolva.

Kutools pentru Excel, cu mai mult de 120 funcții la îndemână, vă ușurează lucrările. 

1. Activați foaia de lucru și țineți apăsat butonul ALT + F11 tastele pentru a deschide Fereastra Microsoft Visual Basic pentru aplicații.

2. Clic Insera > Moduleși lipiți următorul cod în Fereastra modulului.

Cod VBA: trimite gama de celule ca corp din 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

Notă: În codul de mai sus, puteți schimba următoarele informații în funcție de nevoile dvs.

  • .Introduction = "Vă rugăm să citiți acest e-mail."
  • .Item.To = "skyyang @extendoffice.com "
  • .Item.Subject = "informații despre kte"

3. Apoi apasa F5 pentru a rula acest cod și va apărea o casetă de prompt pentru a vă reaminti să selectați un interval pe care doriți să îl trimiteți.

doc-send-range1

4. Apoi faceți clic pe OK, și va apărea o casetă de prompt, după finalizarea barei de progres, faceți clic pe Permiteși apoi intervalul specific de celule a fost trimis destinatarului dvs. ca corp de mesaj.

doc-send-range2

note:

1. Aceste coduri sunt disponibile numai când Outlook ca program de poștă electronică.

2. După trimiterea foii de lucru curente, puteți merge la Outlook pentru a vă asigura că e-mailul a fost trimis cu succes.


Legate de articole:

Cum să trimiteți foaia de lucru numai prin Outlook din Excel?

Cum să trimiteți registrul de lucru curent prin Outlook din Excel?


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 (26)
Încă nu există evaluări. Fii primul care evaluează!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, folosesc marco care selectează celulele necesare pentru e-mail. Am combinat acest lucru cu o altă macrocomandă, astfel încât să-l fac să deschidă un „e-mail nou”. Problema mea este acum că, dacă puneți o mulțime de informații într-o singură celulă, atunci este nevoie doar de informația în care vedeți nu toate informațiile din acea celulă, orice idee. ?? vă mulțumesc foarte mult pentru ajutorul vostru cu aceste urale
Acest comentariu a fost redus la minimum de moderatorul de pe site
buna tuturor
Am un proiect pentru a selecta intervalul din foaia 1 pentru a fi trimis prin e-mail una câte una la mai multe adrese de e-mail scrise în foaia 2 în coloana A și dacă coloana B este goală cu un anumit subiect și după trimitere scrie în foaia 2 coloana b trimis
Și să așteptați timp 10 secunde pentru a trimite următorul e-mail ca condiție a serverului
Ma ajuta cineva va rog?   
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, Vă rog să-mi spuneți cum să adaug semnătura și a doua linie de prezentare la acest e-mail pentru al doilea program. Mulțumesc anticipat.
Acest comentariu a fost redus la minimum de moderatorul de pe site
frumos si util, treaba buna!!!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Foarte util. Mulțumesc . Am o listă de adrese de e-mail pe aceeași foaie. Când am făcut clic pe o adresă de e-mail , intervalul de celule selectat va fi trimis ca atașament la acest e-mail. Vă rog să mă ajutați cu asta? Mulțumesc.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Salut, Foarte frumos explicat. În loc să trimitem un nou registru de lucru, putem doar să copiam și să lipim intervalul selectat în corpul e-mailului și să îl trimitem. Nu vreau să trimit intervalul selectat ca imagine. Vreau să trimit ca o vizualizare de tabel în corpul e-mailului. Putem face asta??
Acest comentariu a fost redus la minimum de moderatorul de pe site
Mulțumesc, este foarte util, dar dacă trebuie să adaug o descriere în corpul e-mailului înainte de a o trimite. Vă rugăm să sugerați codul.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună,
Totul arată bine, dar nu oferă limitele selectate, ați putea vă rog să sugerați.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Mulțumesc mult, am găsit soluția asta de mult timp.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Excelenta treaba. Ar fi mai bine să vedeți acest lucru trimis automat. Ce ar trebui să fac ca să nu apară o eroare înainte de a relua trimiterea?
Acest comentariu a fost redus la minimum de moderatorul de pe site
am putea pune cât mai multe adrese de e-mail la care să le trimitem?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, Carey, toate de deasupra VBA-urilor pot adăuga multe adrese de e-mail (Către, BCC, CC) la care să le trimiteți folosind ; ca separator. De exemplu, .To = "skyyang@extendoffice.com; test1@extendoffice.com; test2@extendoffice.com "
Acest comentariu a fost redus la minimum de moderatorul de pe site
Ich möchte das kopierte nicht als Datei in eine E-Mail einfügen, sondern per copy and paste in die E-Mail einfügen. Cum ați găsit în codul VBA?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, am un tabel configurat pe care vreau să îl completeze personalul și apoi un buton de comandă care va genera automat un e-mail, totuși vreau ca datele din tabel să fie în corpul e-mailului. Există un cod pentru asta? 
mulțumesc 
Acest comentariu a fost redus la minimum de moderatorul de pe site
buna tuturor
Am un proiect pentru a selecta intervalul din foaia 1 pentru a fi trimis prin e-mail una câte una la mai multe adrese de e-mail scrise în foaia 2 în coloana A și dacă coloana B este goală cu un anumit subiect și după trimitere scrie în foaia 2 coloana b trimis
Și să așteptați timp 10 secunde pentru a trimite următorul e-mail ca condiție a serverului
Ma ajuta cineva va rog?   
Acest comentariu a fost redus la minimum de moderatorul de pe site
buna tuturor
Am un proiect pentru a selecta intervalul din foaia 1 pentru a fi trimis prin e-mail una câte una la mai multe adrese de e-mail scrise în foaia 2 în coloana A și dacă coloana B este goală cu un anumit subiect și după trimitere scrie în foaia 2 coloana b trimis
Și să așteptați timp 10 secunde pentru a trimite următorul e-mail ca condiție a serverului
Ma ajuta cineva va rog?   
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, hriad, " dacă coloana B este goală cu un anumit subiect și după trimitere scrie în foaia 2 coloana b trimisă
Și să așteptați 10 secunde pentru a trimite următorul e-mail ca condiție a serverului" Nu înțeleg asta. Vă rog să-mi spuneți din nou despre cerința dvs.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună Sunny
în primul rând, mulțumesc pentru ajutor, deoarece serverul a pus o condiție să nu trimită multe e-mailuri în aceeași secundă, vreau să aștept 10 secunde după trimiterea primului e-mail și a celui următor.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, hriad, vă rugăm să încercați codul de mai jos, după ce îl rulați, va apărea un dialog pentru selectarea unui interval pe care doriți să îl trimiteți, apoi se va trimite la adresele din foaia 2 coloana A și cu subiectele în coloana B. La fiecare 10 secunde , trimiteți la o singură adresă. Puteți schimba codul „Vă rugăm să citiți acest e-mail” după cum aveți nevoie.
Sub SendEmailRange()

„Actualizați deExtendoffice20220414

Dim WorkRng As Range

Dim xSU, EV As Boolean

Dim xWSh ca fișă de lucru

Dim xCount As Integer

Dim xI ca întreg

La data de eroare CV următoare

xTitleId = „KutoolsforExcel”

'selectați un interval care se trimitea ca corp

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

Dacă WorkRng este Nimic, Ieșiți din Sub
WorkRng.Activate
WorkRng.Select

Setați xWSh = ActiveWorkbook.Worksheets("Sheet2") „foaia care conține adrese și subiecte

xCount = xWSh.UsedRange.Rows.Count

xSU = Application.ScreenUpdating

EV = ActiveWorkbook.EnvelopeVisible

Application.ScreenUpdating = Fals


Pentru xI = 1 To xCount

Dacă (xWSh.Range("A" & xI) = "") Atunci
Ieșiți pentru
Final, dacă
ActiveWorkbook.EnvelopeVisible = Adevărat
Cu ActiveSheet.MailEnvelope
.Introduction = "Vă rugăm să citiți acest e-mail."

.Item.To = xWSh.Range(„A” și xI)

.Articol.Subiect = xWSh.Range(„B” și xI)

.Articol.Trimite
Se termina cu
Dacă (xI = xCount) Atunci

Ieșiți pentru

Final, dacă

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

Pagina Următoare →


Application.ScreenUpdating = xSU

ActiveWorkbook.EnvelopeVisible = EV

End Sub

Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună Sunny
Multumesc mult pentru efortul depus.... Multumesc mult
Acest comentariu a fost redus la minimum de moderatorul de pe site
Putem stabili intervale fixe? în macro eul său
Acest comentariu a fost redus la minimum de moderatorul de pe site
Buna ziua,

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ę to podpiąć pod 5 przycisków?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, Pawerl
Pentru a vă rezolva problema, articolul de mai jos vă poate ajuta, vă rugăm să îl verificați:

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

Mulțumesc!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Multumesc pentru asta! Îl voi testa în curând, când mă întorc din vacanță. Mai am o întrebare. Aveți o problemă cu rularea codurilor vba utilizând butonul Activex (nicio acțiune), chiar dacă codul funcționează perfect în modul de editare sau când este rulat de ctrl+butonul selectat de la tastatură. Tocmai încep călătoria vba și nu am
idee ce gresesc :/
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, Pawerl
Trebuie doar să copiați și să lipiți codul în Microsoft Visual Basic pentru aplicații fereastra, apoi faceți clic pe Alerga butonul din bara de instrumente, așa cum se arată mai jos în captura de ecran: (notițe: în cod, S1 este celula care conține adresa de e-mail la care doriți să trimiteți e-mailul. Vă rugăm să le schimbați în funcție de nevoile dvs.)

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

Vă rugăm să încercați din nou!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună,

Am făcut totul ca mai sus și rezultatul este: totul funcționează perfect în afară de butonul :) Nu-ți pasă de asta momentan :)

Multumesc enorm!!! subiect inchis :)
Nu există comentarii postate aici încă
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