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

Làm thế nào để gửi / gửi email phạm vi ô thông qua outlook từ Excel?

Bạn đã bao giờ gặp phải vấn đề sau khi hoàn thành một báo cáo trong một trang tính và bạn cần gửi đến một loạt các ô trong trang tính này chứa một số dữ liệu quan trọng cho người nhận cụ thể của bạn. Có cách nào nhanh chóng để bạn gửi email phạm vi này từ Excel mà không cần mở Outlook không?

Gửi dải ô dưới dạng tệp đính kèm từ Excel với mã VBA

Gửi dải ô dưới dạng nội dung từ Excel với mã VBA


mũi tên màu xanh bong bóng bên phảiGửi dải ô dưới dạng tệp đính kèm từ Excel với mã VBA

Mã VBA sau có thể giúp bạn gửi dải ô đã chọn của mình dưới dạng tệp đính kèm trong Excel. Vui lòng làm như sau:

1. Mở sổ làm việc của bạn và sau đó giữ ALT + F11 phím để mở Cửa sổ Microsoft Visual Basic for Applications.

2. Nhấp chuột Chèn > Mô-đunvà dán mã sau vào Cửa sổ mô-đun.

Mã VBA: gửi dải ô dưới dạng tệp đính kèm từ 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

Chú thích: Trong đoạn mã trên, bạn có thể thay đổi các thông tin sau theo nhu cầu của riêng bạn.

  • .To = "skyyang @extendoffice.com "
  • .CC = ""
  • .BCC = ""
  • .Subject = "thông tin của kte"
  • .Body = "xin chào, vui lòng kiểm tra và đọc tài liệu này."

3. Sau đó nhấn vào F5 để chạy mã này và một hộp nhắc sẽ bật ra để nhắc bạn chọn một dải ô mà bạn muốn gửi. Xem ảnh chụp màn hình:

doc-gửi-phạm vi1

4. Sau đó nhấn vào OKvà một hộp nhắc sẽ xuất hiện, sau khi thanh tiến trình kết thúc, hãy nhấp vào Cho phép, và sau đó phạm vi ô cụ thể đã được gửi đến người nhận của bạn dưới dạng tệp đính kèm.

doc-gửi-phạm vi2


mũi tên màu xanh bong bóng bên phảiGửi dải ô dưới dạng nội dung từ Excel với mã VBA

Nếu bạn muốn gửi một phạm vi cụ thể như một phần của nội dung thư từ Excel, bạn cũng có thể áp dụng mã VBA sau để giải quyết nó.

Kutools cho Excel, với hơn 120 chức năng tiện dụng, giúp công việc của bạn dễ dàng hơn. 

1. Kích hoạt trang tính của bạn và nhấn giữ ALT + F11 phím để mở Cửa sổ Microsoft Visual Basic for Applications.

2. Nhấp chuột Chèn > Mô-đunvà dán mã sau vào Cửa sổ mô-đun.

Mã VBA: gửi dải ô dưới dạng nội dung từ 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

LƯU Ý Trong đoạn mã trên, bạn có thể thay đổi thông tin sau theo nhu cầu của mình.

  • .Introduction = "Vui lòng đọc email này."
  • .Item.To = "skyyang @extendoffice.com "
  • .Item.Subject = "thông tin của kte"

3. Sau đó nhấn vào F5 để chạy mã này và một hộp nhắc sẽ bật ra để nhắc bạn chọn một dải ô mà bạn muốn gửi.

doc-gửi-phạm vi1

4. Sau đó nhấn vào OKvà một hộp nhắc sẽ xuất hiện, sau khi thanh tiến trình kết thúc, hãy nhấp vào Cho phép, và sau đó phạm vi ô cụ thể đã được gửi đến người nhận của bạn dưới dạng nội dung thư.

doc-gửi-phạm vi2

Ghi chú:

1. Các mã này chỉ khả dụng khi Outlook làm chương trình thư của bạn.

2. Sau khi gửi trang tính hiện tại, bạn có thể vào Outlook của mình để đảm bảo rằng email đã được gửi thành công hay chưa.


Các bài liên quan:

Làm cách nào để chỉ gửi trang tính qua Outlook từ Excel?

Làm cách nào để gửi sổ làm việc hiện tại qua Outlook từ Excel?


Các công cụ năng suất văn phòng tốt nhất

Kutools cho Excel giải quyết hầu hết các vấn đề của bạn và tăng 80% năng suất của bạn

  • Tái sử dụng: Chèn nhanh công thức phức tạp, biểu đồ và bất cứ thứ gì bạn đã sử dụng trước đây; Mã hóa ô với mật khẩu; Tạo danh sách gửi thư và gửi email ...
  • Thanh siêu công thức (dễ dàng chỉnh sửa nhiều dòng văn bản và công thức); Bố cục đọc (dễ dàng đọc và chỉnh sửa số lượng ô lớn); Dán vào Dải ô đã Lọchữu ích. Cảm ơn !
  • Hợp nhất các ô / hàng / cột mà không làm mất dữ liệu; Nội dung phân chia ô; Kết hợp các hàng / cột trùng lặp... Ngăn chặn các ô trùng lặp; So sánh các dãyhữu ích. Cảm ơn !
  • Chọn trùng lặp hoặc duy nhất Hàng; Chọn hàng trống (tất cả các ô đều trống); Tìm siêu và Tìm mờ trong Nhiều Sổ làm việc; Chọn ngẫu nhiên ...
  • Bản sao chính xác Nhiều ô mà không thay đổi tham chiếu công thức; Tự động tạo tài liệu tham khảo sang Nhiều Trang tính; Chèn Bullets, Hộp kiểm và hơn thế nữa ...
  • Trích xuất văn bản, Thêm Văn bản, Xóa theo Vị trí, Xóa không gian; Tạo và In Tổng số phân trang; Chuyển đổi giữa nội dung ô và nhận xéthữu ích. Cảm ơn !
  • Siêu lọc (lưu và áp dụng các lược đồ lọc cho các trang tính khác); Sắp xếp nâng cao theo tháng / tuần / ngày, tần suất và hơn thế nữa; Bộ lọc đặc biệt bằng cách in đậm, in nghiêng ...
  • Kết hợp Workbook và WorkSheets; Hợp nhất các bảng dựa trên các cột chính; Chia dữ liệu thành nhiều trang tính; Chuyển đổi hàng loạt xls, xlsx và PDFhữu ích. Cảm ơn !
  • Hơn 300 tính năng mạnh mẽ. Hỗ trợ Office / Excel 2007-2021 và 365. Hỗ trợ tất cả các ngôn ngữ. Dễ dàng triển khai trong doanh nghiệp hoặc tổ chức của bạn. Đầy đủ tính năng Dùng thử miễn phí 30 ngày. Bảo đảm hoàn lại tiền trong 60 ngày.
tab kte 201905

Tab Office mang lại giao diện Tab cho Office và giúp công việc của bạn trở nên dễ dàng hơn nhiều

  • Cho phép chỉnh sửa và đọc theo thẻ trong Word, Excel, PowerPoint, Publisher, Access, Visio và Project.
  • Mở và tạo nhiều tài liệu trong các tab mới của cùng một cửa sổ, thay vì trong các cửa sổ mới.
  • Tăng 50% năng suất của bạn và giảm hàng trăm cú nhấp chuột cho bạn mỗi ngày!
officetab dưới cùng
Nhận xét (26)
Chưa có xếp hạng. Hãy là người đầu tiên xếp hạng!
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào, tôi đang sử dụng marco để chọn các ô cần thiết để gửi email. Tôi đã kết hợp macro này với một macro khác để tôi có thể mở một "email mới", vấn đề của tôi bây giờ là nếu bạn đặt rất nhiều thông tin vào một ô thì nó chỉ lấy iformaiton mà bạn xem chứ không phải tất cả thông tin trong ô đó. ?? cảm ơn bạn rất nhiều vì sự giúp đỡ của bạn với sự cổ vũ này
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
chào mọi người
Tôi có một dự án chọn phạm vi trong sheet 1 gửi lần lượt qua email đến nhiều địa chỉ email ghi ở sheet 2 ở cột A và nếu để trống cột B với một chủ đề nào đó và sau khi gửi anh ấy viết vào sheet 2 thì cột b đã gửi.
Và thời gian chờ 10 giây để gửi email tiếp theo như điều kiện của máy chủ
Bất kỳ ai giúp tôi xin vui lòng?   
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào, Bạn có thể vui lòng cho tôi biết cách thêm chữ ký và dòng giới thiệu thứ hai vào thư này cho chương trình thứ hai không. Cảm ơn trước.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
tốt đẹp và hữu ích, công việc tốt !!!
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Rất hữu ích. Cảm ơn bạn . Tôi có danh sách địa chỉ email trên cùng một trang. Khi tôi nhấp vào một địa chỉ email, phạm vi ô đã chọn sẽ được gửi dưới dạng tệp đính kèm cho email này. Xin vui lòng giúp tôi về điều này?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào, được giải thích rất hay. Thay vì gửi một sổ làm việc mới, chúng tôi chỉ có thể sao chép và dán phạm vi đã chọn vào nội dung email và gửi. Tôi không muốn gửi Phạm vi đã chọn dưới dạng Hình ảnh. Tôi muốn gửi một dạng xem bảng trong nội dung email. Chúng ta có thể làm được không??
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Cảm ơn, Điều này rất hữu ích nhưng nếu tôi cần thêm một số mô tả trong nội dung thư trước khi gửi nó thì sao. Vui lòng đề xuất mã.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Chào,
Mọi thứ có vẻ tốt nhưng không đưa ra phạm vi đường viền đã chọn, Bạn có thể vui lòng đề xuất.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Cảm ơn bạn rất nhiều Tôi tìm thấy giải pháp này rất lâu.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Công việc tuyệt vời. Sẽ tốt hơn nếu nó được gửi đi một cách tự động. Tôi nên làm gì để nó không xuất hiện lỗi trước khi tiếp tục gửi?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
chúng tôi có thể đặt bao nhiêu địa chỉ email để gửi đến?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào, Carey, tất cả các VBA ở trên đều có thể thêm nhiều địa chỉ email (Tới, BCC, CC) để gửi đến bằng cách sử dụng; làm dấu phân cách. Ví dụ: .To = "skyyang @extendoffice.com; test1 @extendoffice.com; test2 @extendoffice.com "
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
ich möchte das kopierte nicht als Datei trong eine E-Mail einfügen, sondern trên mỗi bản sao và dán trong die E-Mail einfügen. Wie geht das trong dem VBA-Code?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào, tôi có một bảng được thiết lập mà tôi muốn nhân viên điền vào và sau đó một nút lệnh sẽ tự động tạo email, tuy nhiên tôi muốn dữ liệu từ bảng nằm trong nội dung email. Có một mã cho điều đó? 
Cảm ơn bạn 
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
chào mọi người
Tôi có một dự án chọn phạm vi trong sheet 1 gửi lần lượt qua email đến nhiều địa chỉ email ghi ở sheet 2 ở cột A và nếu để trống cột B với một chủ đề nào đó và sau khi gửi anh ấy viết vào sheet 2 thì cột b đã gửi.
Và thời gian chờ 10 giây để gửi email tiếp theo như điều kiện của máy chủ
Bất kỳ ai giúp tôi xin vui lòng?   
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
chào mọi người
Tôi có một dự án chọn phạm vi trong sheet 1 gửi lần lượt qua email đến nhiều địa chỉ email ghi ở sheet 2 ở cột A và nếu để trống cột B với một chủ đề nào đó và sau khi gửi anh ấy viết vào sheet 2 thì cột b đã gửi.
Và thời gian chờ 10 giây để gửi email tiếp theo như điều kiện của máy chủ
Bất kỳ ai giúp tôi xin vui lòng?   
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Hi, hriad, "nếu cột B trống với một chủ đề nhất định và sau khi gửi, anh ta viết vào trang tính 2, cột b đã gửi
Và phải đợi thời gian 10 giây để gửi email tiếp theo như điều kiện của máy chủ "Tôi không hiểu điều này. Vui lòng kể lại cho tôi về yêu cầu của bạn.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào Sunny
Trước hết, cảm ơn sự giúp đỡ của bạn, vì máy chủ đặt điều kiện không gửi nhiều email trong cùng một giây, tôi muốn đợi 10 giây sau khi gửi email đầu tiên và email sau.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào, hriad, vui lòng thử mã dưới đây, sau khi chạy nó, nó sẽ bật ra hộp thoại để chọn một dải ô mà bạn muốn gửi, sau đó nó sẽ gửi đến các địa chỉ trong sheet 2 cột A và với các chủ đề trong cột B. Cứ 10 giây một lần. , gửi đến một địa chỉ. Bạn có thể thay đổi mã "Vui lòng đọc email này" khi cần.
Sub SendEmailRange ()

'Cập nhật bởiExtendoffice20220414

Dim WorkRng As Range

Dim xSU, EV dưới dạng Boolean

Làm mờ xWSh dưới dạng trang tính

Dim xCount dưới dạng số nguyên

Dim xI dưới dạng số nguyên

On Error Resume Next

xTitleId = "KutoolsforExcel"

'chọn một dải ô đã được sử dụng để gửi dưới dạng nội dung

Đặt WorkRng = Application.InputBox ("Phạm vi", xTitleId, Application.Selection.Address,,,,, 8)

Nếu WorkRng Không Có Gì Thì Thoát Sub
WorkRng.Activate
WorkRng.Select

Đặt xWSh = ActiveWorkbook.Worksheets ("Sheet2") 'trang tính chứa địa chỉ và chủ đề

xCount = xWSh.UsedRange.Rows.Count

xSU = Application.ScreenUpdating

EV = ActiveWorkbook.EnvelopeVosystem

Application.ScreenUpdating = Sai


Đối với xI = 1 Đến xCount

If (xWSh.Range ("A" & xI) = "") Thì
Thoát cho
Cuối Nếu
ActiveWorkbook.EnvelopeVosystem = True
Với ActiveSheet.MailEnvelope
.Introduction = "Vui lòng đọc email này."

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

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

.Item.Gửi
Kết thúc với
Nếu (xI = xCount) Thì

Thoát cho

Cuối Nếu

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

Sau


Ứng dụng.ScreenUpdating = xSU

ActiveWorkbook.EnvelopeVosystem = EV

End Sub

Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào Sunny
Rất nhiều Cảm ơn vì nỗ lực của bạn .... Cảm ơn rất nhiều
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Chúng ta có thể cố định phạm vi không? trong vĩ mô tự nó
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào,

Mam plik z 6 arkuszami. Każdy z arkuszy 2-6 musi zostać wysłany do innej grupy odbiorców jako załącznik excela. Làm thế nào bạn có thể đến podpiąć pod 5 przycisków?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào, pawerl
Để giải quyết vấn đề của bạn, bài viết dưới đây có thể giúp ích cho bạn, hãy cùng tham khảo:

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

Cảm ơn bạn!
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Cảm ơn vì điều này! Tôi sẽ kiểm tra nó ngay sau khi tôi trở lại sau kỳ nghỉ. Có một câu hỏi nữa. Gặp sự cố khi chạy mã vba bằng cách sử dụng nút Activex (không có hành động nào cả) ngay cả khi mã hoạt động hoàn hảo trên chế độ chỉnh sửa hoặc khi chạy bằng ctrl + nút đã chọn từ bàn phím. Tôi chỉ mới bắt đầu hành trình vba và không có
ý tôi đang làm sai: /
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào, pawerl
Bạn chỉ cần sao chép và dán mã vào Microsoft Visual Basic cho các ứng dụng cửa sổ, sau đó bấm vào chạy từ thanh công cụ như ảnh chụp màn hình bên dưới: (Chú thích: trong mã, S1 là ô chứa địa chỉ email mà bạn muốn gửi email đến. Vui lòng thay đổi chúng theo nhu cầu của bạn.)

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

Vui lòng thử lại!
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Chào,

Tôi đã làm mọi thứ như trên và kết quả là: tất cả đều hoạt động hoàn hảo ngoài nút bấm :) Không thực sự quan tâm đến điều này vào lúc này :)

Rất cảm ơn bạn !!! chủ đề đã đóng :)
Không có bình luận nào được đăng ở đây
Để lại ý kiến ​​của bạn
Đăng với tư cách khách
×
Đánh giá bài viết này:
0   Nhân vật
Các vị trí được đề xuất

Kết nối với chúng tôi

Bản quyền © 2009 - www.extendoffice.com. | Đã đăng ký Bản quyền. cung cấp bởi ExtendOffice. | BẢN ĐỒ CHI NHÁNH
Microsoft và logo Office là các nhãn hiệu hoặc nhãn hiệu đã đăng ký của Microsoft Corporation tại Hoa Kỳ và / hoặc các quốc gia khác.
Được bảo vệ bởi Sectigo SSL