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

Jak wysłać / wysłać zakres komórek za pośrednictwem programu Outlook z programu Excel?

Czy kiedykolwiek miałeś problem, że po zakończeniu raportu w arkuszu roboczym musisz wysłać do zakresu komórek w tym arkuszu, które zawierają ważne dane do konkretnego odbiorcy. Czy są jakieś szybkie sposoby na wysłanie e-maila z tego zakresu z programu Excel bez otwierania Outlooka?

Wyślij zakres komórek jako załącznik z Excela za pomocą kodu VBA

Wyślij zakres komórek jako treść z programu Excel za pomocą kodu VBA


strzałka niebieski prawy bąbelekWyślij zakres komórek jako załącznik z Excela za pomocą kodu VBA

Poniższy kod VBA może pomóc w wysłaniu wybranego zakresu jako załącznika w programie Excel. Zrób tak:

1. Otwórz skoroszyt, a następnie przytrzymaj ALT + F11 klawisze, aby otworzyć Okno Microsoft Visual Basic for Applications.

2, Kliknij wstawka > Modułi wklej następujący kod w Okno modułu.

Kod VBA: wyślij zakres komórek jako załącznik z programu 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

Uwagi: W powyższym kodzie możesz zmienić następujące informacje według własnych potrzeb.

  • .To = "skyyang @extendoffice.com ”
  • .CC = „”
  • .BCC = „”
  • .Subject = "informacja o kte"
  • .Body = "witaj, sprawdź i przeczytaj ten dokument."

3. Następnie kliknij F5 , aby uruchomić ten kod, a pojawi się okno zachęty przypominające o wyborze zakresu, który chcesz wysłać. Zobacz zrzut ekranu:

zakres-wysyłania dokumentów1

4. Następnie kliknij OK, a pojawi się okno zachęty, po zakończeniu paska postępu kliknij Dopuszczać, a następnie określony zakres komórek został wysłany do odbiorcy jako załącznik.

zakres-wysyłania dokumentów2


strzałka niebieski prawy bąbelekWyślij zakres komórek jako treść z programu Excel za pomocą kodu VBA

Jeśli chcesz wysłać określony zakres jako część treści wiadomości z programu Excel, możesz również zastosować następujący kod VBA, aby go rozwiązać.

Kutools dla programu Excel, ponad 120 przydatne funkcje, ułatwiają pracę. 

1. Aktywuj arkusz roboczy i przytrzymaj ALT + F11 klawisze, aby otworzyć Okno Microsoft Visual Basic for Applications.

2, Kliknij wstawka > Modułi wklej następujący kod w Okno modułu.

Kod VBA: wyślij zakres komórek jako treść z programu 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

Uwaga: W powyższym kodzie możesz zmienić następujące informacje według swoich potrzeb.

  • .Introduction = "Przeczytaj tę wiadomość e-mail."
  • .Item.To = "skyyang @extendoffice.com ”
  • .Item.Subject = "informacje o kte"

3. Następnie kliknij F5 klawisz, aby uruchomić ten kod, a pojawi się okno zachęty przypominające o wybraniu zakresu, który chcesz wysłać.

zakres-wysyłania dokumentów1

4. Następnie kliknij OK, a pojawi się okno zachęty, po zakończeniu paska postępu kliknij Dopuszczać, a następnie określony zakres komórek został wysłany do odbiorcy jako treść wiadomości.

zakres-wysyłania dokumentów2

Uwagi:

1. Te kody są dostępne tylko wtedy, gdy Outlook jest programem pocztowym.

2. Po wysłaniu aktualnego arkusza możesz przejść do programu Outlook, aby sprawdzić, czy wiadomość e-mail została wysłana pomyślnie.


Podobne artykuły:

Jak wysłać arkusz roboczy tylko przez Outlooka z Excela?

Jak wysłać aktualny skoroszyt przez Outlooka z Excela?


Najlepsze narzędzia biurowe

Kutools dla programu Excel rozwiązuje większość problemów i zwiększa produktywność o 80%

  • Ponowne użycie: Szybko włóż złożone wzory, wykresy i wszystko, czego używałeś wcześniej; Szyfruj komórki z hasłem; Utwórz listę mailingową i wysyłaj e-maile ...
  • Pasek Super Formula (łatwo edytować wiele wierszy tekstu i formuły); Układ do czytania (łatwe odczytywanie i edytowanie dużej liczby komórek); Wklej do filtrowanego zakresu...
  • Scal komórki / wiersze / kolumny bez utraty danych; Podziel zawartość komórek; Połącz zduplikowane wiersze / kolumny... Zapobiegaj zduplikowanym komórkom; Porównaj zakresy...
  • Wybierz Duplikat lub Unikalny Wydziwianie; Wybierz puste wiersze (wszystkie komórki są puste); Super Find i Fuzzy Find w wielu zeszytach ćwiczeń; Losowy wybór ...
  • Dokładna kopia Wiele komórek bez zmiany odwołania do formuły; Automatyczne tworzenie odniesień do wielu arkuszy; Wstaw punktory, Pola wyboru i nie tylko ...
  • Wyodrębnij tekst, Dodaj tekst, Usuń według pozycji, Usuń przestrzeń; Tworzenie i drukowanie podsumowań stronicowania; Konwertuj zawartość komórek i komentarze...
  • Super filtr (zapisz i zastosuj schematy filtrów do innych arkuszy); Zaawansowane sortowanie według miesiąca / tygodnia / dnia, częstotliwości i innych; Specjalny filtr pogrubieniem, kursywą ...
  • Połącz skoroszyty i arkusze robocze; Scal tabele na podstawie kluczowych kolumn; Podziel dane na wiele arkuszy; Konwersja wsadowa xls, xlsx i PDF...
  • Ponad 300 zaawansowanych funkcji. Obsługuje Office / Excel 2007-2021 i 365. Obsługuje wszystkie języki. Łatwe wdrażanie w przedsiębiorstwie lub organizacji. Pełne funkcje 30-dniowa bezpłatna wersja próbna. 60-dniowa gwarancja zwrotu pieniędzy.
karta kte 201905

Karta Office wprowadza interfejs z zakładkami do pakietu Office i znacznie ułatwia pracę

  • Włącz edycję i czytanie na kartach w programach Word, Excel, PowerPoint, Publisher, Access, Visio i Project.
  • Otwieraj i twórz wiele dokumentów w nowych kartach tego samego okna, a nie w nowych oknach.
  • Zwiększa produktywność o 50% i redukuje setki kliknięć myszką każdego dnia!
officetab dół
Sortuj komentarze według
Komentarze (26)
Brak ocen. Oceń jako pierwszy!
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć, używam marco, który wybiera komórki wymagane do wysłania e-maila. Połączyłem to z innym makrem, abym mógł otworzyć „nową wiadomość e-mail”, mój problem polega na tym, że jeśli umieścisz dużo informacji w jednej komórce, to zajmie tylko to, co widzisz, nie wszystkie informacje w tej komórce są jakieś pomysły ?? bardzo dziękuję za pomoc przy tych okrzykach
Ten komentarz został zminimalizowany przez moderatora na stronie
cześć wszystkim
Mam projekt do wybrania zakresu w arkuszu 1 do wysłania e-mailem jeden po drugim do wielu adresów e-mail wpisanych w arkuszu 2 w kolumnie A i jeśli kolumna B jest pusta z określonym tematem i po wysłaniu wpisuje w arkuszu 2 kolumna b wysłana
I czekać 10 sekund na wysłanie następnego e-maila jako stan serwera
Ktoś mi pomoże, proszę?   
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć, Czy możesz mi powiedzieć, jak dodać podpis i drugą linię wprowadzenia do tego e-maila dla drugiego programu. Z góry dziękuję.
Ten komentarz został zminimalizowany przez moderatora na stronie
ładne i przydatne, dobra robota !!!
Ten komentarz został zminimalizowany przez moderatora na stronie
Bardzo przydatne. Dziękuję Ci . Mam listę adresów e-mail na tym samym arkuszu. Po kliknięciu jednego adresu e-mail wybrany zakres komórek zostanie wysłany jako załącznik do tego e-maila. Czy możesz mi w tym pomóc? Wielkie dzięki.
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć, bardzo ładnie wyjaśnione. Zamiast wysyłać nowy skoroszyt, możemy tylko skopiować i wkleić wybrany zakres do treści wiadomości e-mail i wysłać. Nie chcę wysyłać wybranego zakresu jako obrazu. Chcę wysłać jako widok tabeli w treści wiadomości e-mail. Czy możemy to zrobić??
Ten komentarz został zminimalizowany przez moderatora na stronie
Dzięki, jest to bardzo przydatne, ale co jeśli muszę dodać opis w treści wiadomości przed jej wysłaniem. Proszę zasugerować kod.
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć,
Wszystko wygląda dobrze, ale nie podając granicy wybranego zakresu, czy mógłbyś zasugerować.
Ten komentarz został zminimalizowany przez moderatora na stronie
Dziękuję bardzo, tak długo znajduję to rozwiązanie.
Ten komentarz został zminimalizowany przez moderatora na stronie
Świetna robota. Byłoby lepiej, gdyby to zostało wysłane automatycznie. Co powinienem zrobić, aby nie wyświetlał się komunikat o błędzie przed wznowieniem wysyłania?
Ten komentarz został zminimalizowany przez moderatora na stronie
czy możemy podać jak najwięcej adresów e-mail do wysłania?
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć, Carey, wszyscy powyżej VBA mogą dodawać wiele adresów e-mail (Do, BCC, CC), aby wysłać je za pomocą ; jako separator. Na przykład .To = "skyyang@extendoffice.com; test1@extendoffice.com; test2@extendoffice.com ”
Ten komentarz został zminimalizowany przez moderatora na stronie
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. Czy jesteś w kodzie VBA?
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć Mam ustawioną tabelę, którą chcę, aby personel wypełnił, a następnie przycisk polecenia, który automatycznie wygeneruje wiadomość e-mail, jednak chcę, aby dane z tabeli znalazły się w treści wiadomości e-mail. Czy jest na to kod? 
Dziękuję Ci 
Ten komentarz został zminimalizowany przez moderatora na stronie
cześć wszystkim
Mam projekt do wybrania zakresu w arkuszu 1 do wysłania e-mailem jeden po drugim do wielu adresów e-mail wpisanych w arkuszu 2 w kolumnie A i jeśli kolumna B jest pusta z określonym tematem i po wysłaniu wpisuje w arkuszu 2 kolumna b wysłana
I czekać 10 sekund na wysłanie następnego e-maila jako stan serwera
Ktoś mi pomoże, proszę?   
Ten komentarz został zminimalizowany przez moderatora na stronie
cześć wszystkim
Mam projekt do wybrania zakresu w arkuszu 1 do wysłania e-mailem jeden po drugim do wielu adresów e-mail wpisanych w arkuszu 2 w kolumnie A i jeśli kolumna B jest pusta z określonym tematem i po wysłaniu wpisuje w arkuszu 2 kolumna b wysłana
I czekać 10 sekund na wysłanie następnego e-maila jako stan serwera
Ktoś mi pomoże, proszę?   
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć, hriad, jeśli kolumna B jest pusta z określonym tematem i po wysłaniu wpisuje w arkuszu 2 kolumna b wysłana
I czekać 10 sekund na wysłanie następnego e-maila jako stan serwera” Nie rozumiem tego. Proszę opowiedzieć mi o swoich wymaganiach.
Ten komentarz został zminimalizowany przez moderatora na stronie
Witaj Sunny
przede wszystkim dziękuję za pomoc , ponieważ serwer postawił warunek, aby nie wysyłać wielu e-maili w tej samej sekundzie , chcę poczekać 10 sekund po wysłaniu pierwszego i następnego e-maila.
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć, hriad, wypróbuj poniższy kod, po uruchomieniu pojawi się okno dialogowe wyboru zakresu, który chcesz wysłać, a następnie wyśle ​​na adresy w arkuszu 2 w kolumnie A i z tematami w kolumnie B. Co 10 sekund , wyślij na jeden adres. W razie potrzeby możesz zmienić kod „Przeczytaj ten e-mail”.
Sub Wyślij Zakres e-mail()

„Aktualizuj przez”Extendoffice20220414

Dim WorkRng jako zakres

Dim xSU, EV jako Boolean

Dim xWSh jako arkusz

Dim xCount jako liczba całkowita

Dim xI jako liczba całkowita

On Error Resume Next

xTitleId = "Kutools for Excel"

'wybierz zakres, który był używany do wysyłania jako treść

Ustaw WorkRng = Application.InputBox("Zakres", xTitleId, Application.Selection.Address, , , , , 8)

Jeśli WorkRng to nic, wyjdź z Sub
WorkRng.Activate
Rob.Rng.Wybierz

Ustaw xWSh = ActiveWorkbook.Worksheets("Arkusz2") 'arkusz zawierający adresy i tematy

xCount = xWSh.UsedRange.Rows.Count

xSU = Aplikacja.Aktualizacja ekranu

EV = ActiveWorkbook.EnvelopeVisible

Application.ScreenUpdating = Fałsz


Dla xI = 1 do xCount

Jeśli (xWSh.Range("A" & xI) = "") Wtedy
Wyjdź dla
End If
ActiveWorkbook.EnvelopeVisible = Prawda
Z ActiveSheet.MailEnvelope
.Introduction = "Przeczytaj tę wiadomość e-mail."

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

.Item.Temat = xWSh.Range("B" i xI)

.Przedmiot.Wyślij
Kończyć z
Jeśli (xI = xCount) Wtedy

Wyjdź dla

End If

Aplikacja.Czekaj teraz + TimeValue("0:00:10")

Dalej


Application.ScreenUpdating = xSU

ActiveWorkbook.EnvelopeVisible = EV

End Sub

Ten komentarz został zminimalizowany przez moderatora na stronie
Witaj Sunny
Wielkie dzięki za twój wysiłek.... Wielkie dzięki
Ten komentarz został zminimalizowany przez moderatora na stronie
Czy możemy ustalić zakresy? w makro to samo
Ten komentarz został zminimalizowany przez moderatora na stronie
Witam,

Mam plik z 6 arkuszami. Z nową grą jako pierwsza 2 grupa musiała zostać wykonana do naszej grupy jako pierwsza. Czy da się to podpiąć pod 6?
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć Paweł
W rozwiązaniu problemu może pomóc poniższy artykuł, sprawdź go:

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

Dziękuję Ci!
Ten komentarz został zminimalizowany przez moderatora na stronie
Dziękuję Ci za to! Przetestuję zaraz jak wrócę z wakacji. Mam jeszcze jedno pytanie. Masz problem z uruchamianiem kodów vba za pomocą przycisku Activex (brak akcji), nawet jeśli kod działa idealnie w trybie edycji lub po uruchomieniu przez ctrl + wybrany przycisk z klawiatury. Właśnie zaczynam podróż vba i nie mam
pomysł co robię źle :/
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć Paweł
Wystarczy skopiować i wkleić kod do Microsoft Visual Basic for Applications okno, a następnie kliknij run przycisk z paska narzędzi, jak pokazano na poniższym zrzucie ekranu: (Uwagi: w kodzie, S1 to komórka zawiera adres e-mail, na który chcesz wysłać wiadomość e-mail. Zmień je zgodnie z potrzebami.)

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

Proszę spróbuj ponownie!
Ten komentarz został zminimalizowany przez moderatora na stronie
Cześć,

Zrobiłem wszystko jak wyżej i rezultat jest taki: wszystko działa idealnie poza przyciskiem :) Nie przejmuję się tym w tej chwili :)

Ogromne podziękowania!!! temat zamknięty :)
Nie ma tu jeszcze żadnych komentarzy
Zostaw swój komentarz
Publikowanie jako gość
×
Oceń ten post:
0   Postacie
Sugerowane lokalizacje

Bądż na bieżąco

Prawa autorskie © 2009 - www.extendoffice.com. | Wszelkie prawa zastrzeżone. Zasilany przez ExtendOffice, | Mapa strony
Microsoft i logo Office są znakami towarowymi lub zastrzeżonymi znakami towarowymi Microsoft Corporation w Stanach Zjednoczonych i / lub innych krajach.
Chronione przez Sectigo SSL