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

Jak odeslat / poslat e-mailem rozsah buněk pomocí aplikace Outlook z aplikace Excel?

Už jste někdy trpěli problémem, že po dokončení sestavy v listu, a musíte poslat do řady buněk v tomto listu, které obsahují některá důležitá data vašemu konkrétnímu příjemci. Existují nějaké rychlé způsoby, jak tento rozsah odeslat e-mailem z aplikace Excel, aniž byste museli otevírat Outlook?

Odešlete řadu buněk jako přílohu z aplikace Excel s kódem VBA

Odešlete řadu buněk jako tělo z aplikace Excel s kódem VBA


šipka modrá pravá bublinaOdešlete řadu buněk jako přílohu z aplikace Excel s kódem VBA

Následující kód VBA vám pomůže odeslat vybraný rozsah jako přílohu v aplikaci Excel. Udělejte prosím toto:

1. Otevřete sešit a podržte ALT + F11 klávesy pro otevření Okno Microsoft Visual Basic pro aplikace.

2, klikněte Vložit > Modula vložte následující kód do Okno modulu.

Kód VBA: odešlete rozsah buněk jako přílohu z aplikace 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

Poznámka: Ve výše uvedeném kódu můžete podle svých potřeb změnit následující informace.

  • .To = "skyyang @extendoffice.com "
  • .CC = ""
  • .BCC = ""
  • .Subject = "informace o kte"
  • .Body = "ahoj, prosím zkontrolujte a přečtěte si tento dokument."

3. Pak klikněte na tlačítko F5 Chcete-li spustit tento kód, zobrazí se okno s výzvou, které vám připomene výběr rozsahu, který chcete odeslat. Viz screenshot:

doc-send-range1

4. Pak klikněte na tlačítko OKa po dokončení indikátoru průběhu se zobrazí výzva a klepněte na povolita poté byl konkrétní rozsah buněk odeslán příjemci jako příloha.

doc-send-range2


šipka modrá pravá bublinaOdešlete řadu buněk jako tělo z aplikace Excel s kódem VBA

Pokud chcete odeslat konkrétní rozsah jako součást těla zprávy z aplikace Excel, můžete k jeho vyřešení použít také následující kód VBA.

Kutools pro Excel, s více než 120 užitečné funkce, které vám usnadní práci. 

1. Aktivujte svůj list a podržte ALT + F11 klávesy pro otevření Okno Microsoft Visual Basic pro aplikace.

2, klikněte Vložit > Modula vložte následující kód do Okno modulu.

Kód VBA: odešlete rozsah buněk jako tělo z aplikace 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

Poznámka: Ve výše uvedeném kódu můžete podle potřeby změnit následující informace.

  • .Introduction = "Přečtěte si prosím tento e-mail."
  • .Item.To = "skyyang @extendoffice.com "
  • .Item.Subject = "informace o kte"

3. Pak klikněte na tlačítko F5 Chcete-li spustit tento kód, zobrazí se výzva k připomenutí výběru rozsahu, který chcete odeslat.

doc-send-range1

4. Pak klikněte na tlačítko OKa po dokončení indikátoru průběhu se zobrazí výzva a klepněte na povolita poté byla konkrétní část buněk odeslána příjemci jako tělo zprávy.

doc-send-range2

Poznámky:

1. Tyto kódy jsou k dispozici pouze v případě, že je aplikace Outlook jako váš poštovní program.

2. Po odeslání aktuálního listu můžete přejít do aplikace Outlook a ověřit, zda byl e-mail úspěšně odeslán.


Související články:

Jak odeslat list pouze prostřednictvím aplikace Outlook z aplikace Excel?

Jak odeslat aktuální sešit prostřednictvím aplikace Outlook z aplikace Excel?


Nejlepší kancelářské nástroje produktivity

Kutools pro Excel řeší většinu vašich problémů a zvyšuje vaši produktivitu o 80%

  • Opakované použití: Rychle vložte složité vzorce, grafy a cokoli, co jste dříve používali; Šifrovat buňky s heslem; Vytvořte seznam adresátů a posílat e-maily ...
  • Super Formula Bar (snadno upravit více řádků textu a vzorce); Rozložení pro čtení (snadno číst a upravovat velké množství buněk); Vložit do filtrovaného rozsahu...
  • Sloučit buňky / řádky / sloupce bez ztráty dat; Rozdělit obsah buněk; Zkombinujte duplicitní řádky / sloupce... Zabraňte duplicitním buňkám; Porovnat rozsahy...
  • Vyberte možnost Duplikovat nebo Jedinečný Řádky; Vyberte prázdné řádky (všechny buňky jsou prázdné); Super hledání a fuzzy hledání v mnoha sešitech; Náhodný výběr ...
  • Přesná kopie Více buněk beze změny odkazu na vzorec; Automaticky vytvářet reference do více listů; Vložte odrážky, Zaškrtávací políčka a další ...
  • Extrahujte text, Přidat text, Odebrat podle pozice, Odebrat mezeru; Vytváření a tisk mezisoučtů stránkování; Převod mezi obsahem buněk a komentáři...
  • Super filtr (uložit a použít schémata filtrů na jiné listy); Rozšířené řazení podle měsíce / týdne / dne, frekvence a dalších; Speciální filtr tučnou kurzívou ...
  • Kombinujte sešity a pracovní listy; Sloučit tabulky na základě klíčových sloupců; Rozdělte data do více listů; Dávkový převod xls, xlsx a PDF...
  • Více než 300 výkonných funkcí. Podporuje Office / Excel 2007-2019 a 365. Podporuje všechny jazyky. Snadné nasazení ve vašem podniku nebo organizaci. Kompletní funkce 30denní bezplatná zkušební verze. 60denní záruka vrácení peněz.
karta kte 201905

Office Tab přináší do Office rozhraní s kartami a usnadňuje vám práci

  • Povolte úpravy a čtení na kartách ve Wordu, Excelu, PowerPointu, Publisher, Access, Visio a Project.
  • Otevřete a vytvořte více dokumentů na nových kartách ve stejném okně, nikoli v nových oknech.
  • Zvyšuje vaši produktivitu o 50% a omezuje stovky kliknutí myší každý den!
officetab dno
Komentáře (26)
Zatím žádné hodnocení. Buďte první, kdo ohodnotí!
Tento komentář byl moderátorem webu minimalizován
Ahoj, používám marko, které vybírá buňky potřebné k odeslání e-mailu. zkombinoval jsem to s jiným makrem, takže to dostanu k otevření „nového e-mailu“, můj problém je nyní v tom, že když vložíte spoustu informací do jedné buňky, zabere to pouze informace, které zobrazíte, ne všechny informace v této buňce, žádné nápady ?? mockrát vám děkuji za vaši pomoc s tímto na zdraví
Tento komentář byl moderátorem webu minimalizován
Ahoj všichni
Mám projekt na výběr rozsahu v listu 1, který se má poslat e-mailem jeden po druhém na mnoho e-mailových adres zapsaných na listu 2 ve sloupci A a pokud je sloupec B prázdný s určitým předmětem a po odeslání napíše do listu 2 sloupec b odeslán
A čekat 10 sekund na odeslání dalšího e-mailu jako podmínku serveru
Pomůže mi někdo prosím?   
Tento komentář byl moderátorem webu minimalizován
Ahoj, můžete mi prosím dát vědět, jak přidat podpis a druhý úvodní řádek do tohoto mailu pro druhý program. Díky předem.
Tento komentář byl moderátorem webu minimalizován
pěkné a užitečné, dobrá práce!!!
Tento komentář byl moderátorem webu minimalizován
Velmi užitečné. Děkuji . Na stejném listu mám seznam e-mailových adres. Když kliknu na jednu e-mailovou adresu, vybraný rozsah buněk bude odeslán jako příloha tohoto e-mailu. Můžete mi prosím pomoci? Mnohokrát děkuji.
Tento komentář byl moderátorem webu minimalizován
Ahoj, moc pěkně vysvětleno. Místo odeslání nového sešitu můžeme pouze zkopírovat a vložit vybraný rozsah do těla e-mailu a odeslat. Nechci odeslat vybraný rozsah jako obrázek. Chci poslat jako tabulkový pohled v těle e-mailu. Můžeme to udělat??
Tento komentář byl moderátorem webu minimalizován
Díky, je to velmi užitečné, ale co když potřebuji přidat nějaký popis do těla pošty před odesláním. Navrhněte prosím kód.
Tento komentář byl moderátorem webu minimalizován
Dobrý den,
Všechno vypadá dobře, ale nedávám hranice vybraného rozsahu, můžete mi prosím navrhnout.
Tento komentář byl moderátorem webu minimalizován
Děkuji mnohokrát, toto řešení hledám tak dlouho.
Tento komentář byl moderátorem webu minimalizován
Excelentní práce. Bylo by lepší, kdyby se to odeslalo automaticky. Co mám udělat, aby se před pokračováním v odesílání neobjevila chyba?
Tento komentář byl moderátorem webu minimalizován
mohli bychom zadat tolik e-mailových adres, na které máme posílat?
Tento komentář byl moderátorem webu minimalizován
Ahoj Carey, všechny výše uvedené VBA mohou přidat mnoho e-mailových adres (Komu, Skrytá kopie, Kopie) k odeslání pomocí ; jako oddělovač. Například .To = "skyyang@extendoffice.com; test1@extendoffice.com; test2@extendoffice.com "
Tento komentář byl moderátorem webu minimalizován
ich möchte das copyrte nict als Datei in eine E-Mail einfügen, sondern on copy and past in die E-Mail einfügen. Jak je to s kódem VBA?
Tento komentář byl moderátorem webu minimalizován
Ahoj, mám nastavenou tabulku, kterou chci, aby personál vyplnil, a poté příkazové tlačítko, které následně automaticky vygeneruje e-mail, nicméně chci, aby údaje z tabulky byly v těle e-mailu. Existuje na to kód? 
Děkuji 
Tento komentář byl moderátorem webu minimalizován
Ahoj všichni
Mám projekt na výběr rozsahu v listu 1, který se má poslat e-mailem jeden po druhém na mnoho e-mailových adres zapsaných na listu 2 ve sloupci A a pokud je sloupec B prázdný s určitým předmětem a po odeslání napíše do listu 2 sloupec b odeslán
A čekat 10 sekund na odeslání dalšího e-mailu jako podmínku serveru
Pomůže mi někdo prosím?   
Tento komentář byl moderátorem webu minimalizován
Ahoj všichni
Mám projekt na výběr rozsahu v listu 1, který se má poslat e-mailem jeden po druhém na mnoho e-mailových adres zapsaných na listu 2 ve sloupci A a pokud je sloupec B prázdný s určitým předmětem a po odeslání napíše do listu 2 sloupec b odeslán
A čekat 10 sekund na odeslání dalšího e-mailu jako podmínku serveru
Pomůže mi někdo prosím?   
Tento komentář byl moderátorem webu minimalizován
Ahoj, hriade, " pokud je sloupec B prázdný s určitým předmětem a po odeslání zapíše do listu 2 sloupec b odesláno
A čekat 10 sekund na odeslání dalšího e-mailu jako podmínku serveru" Nerozumím tomu. Řekněte mi prosím znovu o svém požadavku.
Tento komentář byl moderátorem webu minimalizován
Ahoj Sunny
v první řadě děkuji za pomoc, protože server dal podmínku neposílat mnoho e-mailů ve stejnou sekundu, chci počkat 10 sekund po odeslání prvního e-mailu a následujícího.
Tento komentář byl moderátorem webu minimalizován
Ahoj, hriade, zkuste prosím níže uvedený kód, po jeho spuštění vyskočí dialog pro výběr rozsahu, který chcete odeslat, poté odešle na adresy v listu 2 sloupec A a s předměty ve sloupci B. Každých 10 sekund , zašlete na jednu adresu. Kód „Přečtěte si tento e-mail“ můžete podle potřeby změnit.
Sub SendEmailRange()

'UpdateByExtendoffice20220414

Dim WorkRng As Range

Dim xSU, EV Jako Boolean

Dim xWSh jako pracovní list

Dim xCount As Integer

Dim xI jako celé číslo

On Error Resume Next

xTitleId = "Kutoolsfor Excel"

'vyberte rozsah, který byl použit k odeslání jako tělo

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

Pokud WorkRng Is Nothing Pak Exit Sub
WorkRng.Activate
WorkRng.Select

Set xWSh = ActiveWorkbook.Worksheets("Sheet2") 'list, který obsahuje adresy a předměty

xCount = xWSh.UsedRange.Rows.Count

xSU = Application.ScreenUpdating

EV = ActiveWorkbook.EnvelopeVisible

Application.ScreenUpdating = False


Pro xI = 1 To xCount

If (xWSh.Range("A" & xI) = "") Potom
Ukončete pro
End If
ActiveWorkbook.EnvelopeVisible = Pravda
S ActiveSheet.MailEnvelope
.Introduction = "Přečtěte si prosím tento e-mail."

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

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

.Položka.Odeslat
Konec s
If (xI = xCount) Potom

Ukončete pro

End If

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

další


Application.ScreenUpdating = xSU

ActiveWorkbook.EnvelopeVisible = EV

End Sub

Tento komentář byl moderátorem webu minimalizován
Ahoj Sunny
Mnohokrát děkuji za vaši snahu.... Díky moc
Tento komentář byl moderátorem webu minimalizován
Můžeme stanovit rozsahy? v makru sám o sobě
Tento komentář byl moderátorem webu minimalizován
Dobrý den,

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?
Tento komentář byl moderátorem webu minimalizován
Ahoj, pawerle
Chcete-li vyřešit váš problém, může vám pomoci následující článek, zkontrolujte jej:

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

Děkuji!
Tento komentář byl moderátorem webu minimalizován
Za to ti děkuji! Hned jak se vrátím z dovolené, vyzkouším. Ještě jednu otázku. Máte problém se spouštěním kódů vba pomocí tlačítka Activex (vůbec žádná akce), i když kód funguje perfektně v režimu úprav nebo při spuštění pomocí ctrl + vybraného tlačítka z klávesnice. Právě začínám vba cestu a nemám
představte si co dělám špatně :/
Tento komentář byl moderátorem webu minimalizován
Ahoj, pawerle
Stačí zkopírovat a vložit kód do Microsoft Visual Basic pro aplikace okno a poté klepněte na Běh tlačítko z panelu nástrojů, jak je znázorněno na obrázku níže: (Poznámka: v kódu, S1 je buňka obsahuje e-mailovou adresu, na kterou chcete odeslat e-mail. Změňte je prosím podle svých potřeb.)

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

Prosím zkuste to znovu!
Tento komentář byl moderátorem webu minimalizován
Dobrý den,

Udělal jsem vše, jak je uvedeno výše a výsledek je: vše funguje perfektně kromě tlačítka :) V tuto chvíli mě to opravdu nezajímá :)

Obrovské díky!!! téma uzavřeno :)
Zatím zde nejsou žádné komentáře
Zanechat své připomínky
Odesílání jako host
×
Ohodnoťte tento příspěvek:
0   Postavy
Doporučená umístění