Trong thời đại công nghệ 4.0 như hiện nay, chúng ta cần gì khi sử dụng các ứng dụng văn phòng? Vâng! đó chính là sự linh hoạt, nhanh chóng và chính xác !
Trong bài hướng dẫn về Excel ngày hôm nay, mình sẽ chia sẻ với các bạn thủ thuật gửi Email đính kèm, hay một đoạn nội dung bảng tính… ngay trên ứng dụng Excel, mà không cần phải mở Gmail hoặc Outlook để thực hiện việc sao chép, hay upload tệp.
Hỗ trợ các bạn trao đổi công việc qua mail nhanh chóng ngay trên Excel. Nghe có vẻ khá thú vị phải không nào 😀 Okay, vậy thì vào việc luôn thôi…
Đọc thêm:
- Tạo link liên kết Hyperlink trên Excel bằng công thức hàm
- Cách tô màu giá trị MIN, MAX trên bảng tính Excel, đơn giản!
- Cách sử dụng hàm chấm công, trừ ngày nghỉ thứ bảy, chủ nhật..
Mục Lục Nội Dung
#1. Cách gửi Email trực tiếp trên Excel
+ Bước 1: Đầu tiên bạn mở file Excel của bạn lên.
Tại đây bạn bôi đen, tạo vùng chọn cho bảng tính => Sau đó mở tab Developer => rồi chọn Visual Basic
. Hoặc bạn có thể sử dụng nhanh tổ hợp phím Alt + F11
để mở trình VBA.
+ Bước 2: Hộp thoại Micoroft Visual Basic for Applications
hiện lên => tại đây bạn mở tab menu Insert
=> và chọn Module
.
+ Bước 3: Rồi bạn Copy
đoạn mã Code sau:
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 = “”
.CC = “”
.BCC = “”
.Subject = “”
.Body = “”
.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
+ Bước 4: Sau đó Paste
vào hộp thoại Module1 (Code)
=> và thực hiện chỉnh sửa các thông số:
+ To = “Email người nhận”
+ CC = “Email (nếu có)”
+ BCC = “Email (nếu có)”
+ Subject = “Chủ đề Email”
+ Body = “Nội dung Email”
=> Và nhấn Run
để chạy code.
+ Bước 5: Sau đó nhấn OK
để xác nhận vùng nội dung đính kèm tại hộp thoại KutoolsforExcel.
=> Và nhấn Allow
tại hộp thoại Microsoft Outlook
để cho phép.
Lưu ý: Để thực hiện thành công mã Code này bạn cần cấu hình Outlook trước nhé.
Note: Nếu bạn chưa cấu hình tài khoản Gmail vào Outlook thì có thể tham khảo bài viết Hướng dẫn cấu hình, quản lý Gmail trên Microsoft Outlook chuẩn nhất.
+ Bước 6: Và đây là kết quả sau khi mình thực hiện Test thử:
#2. Cách gửi một đoạn bảng tính qua Email ngay trên Excel
Trong một bài viết gần đây mình đã hướng dẫn các bạn cách gửi bảng tính trên Gmail vẫn giữ được định dạng gốc rồi.
Và với cách sử dụng VBA này, các bạn sẽ không cần mở Gmail để thực hiện như trước nữa nhé.
Thực hiện:
+ Bước 1: Để làm được điều đó trước tiên bạn cần tạo/ bôi đen vùng chọn bảng tính Excel cần gửi => sau đó mở tab Deverlop
=> và chọn Visual Basic
. Hoặc nhấn Alt + F11
cho nhanh.
+ Bước 2: Sau đó chọn Insert
=> chọn Module
như hình bên dưới.
+ Bước 3: Và copy đoạn Code
sau:
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 = “[email protected]”
.Item.Subject = “information of kte”
.Item.Send
End With
Application.ScreenUpdating = True
End Sub
=> Rồi Paste vào hộp thoại Module1 (Code)
=> sau đó chỉnh sửa các thông số:
+ Introduction = “Nội dung Email”
+ Item.To = “Email người nhận”
+ Item.Subject = “Chủ đề Email”
+ Bước 4: Và nhấn Run
để chạy code.
+ Bước 5: Tiếp đó bạn click OK
tại hộp thoại KutoolsforExcel
để xác nhận phạm vi bảng tính.
+ Bước 6: Rồi nhấn Allow
để Microsoft Outlook
thực thi gửi Email theo chỉ định.
Cuối cùng ta được kết quả Email người nhận như hình dưới.
#3. Lời Kết
Okay vậy là xong, mình vừa hướng dẫn rất chi tiết với các bạn cách sử dụng Code VBA trên Excel để gửi tệp đính kèm, hoặc gửi một phần nội dụng của bảng tính Excel qua Email mà không cần mở Gmail, hay Outlook rồi đấy.
Và đến đây thì bài hướng dẫn của mình cũng xin được tạm dừng. Hi vọng thủ thuật này sẽ hữu ích trong công việc của các bạn.
Chúc các bạn thành công !
CTV: Lương Trung – Blogchiasekienthuc.com
em làm cách 2 toàn bị báo lỗi a ạ
bài của bạn sao giống cái mình cần xin cảm ơn trước để thử sao
mình làm được rồi , cảm ơn bạn nhiều , có vấn đề là nhân viên nhiều mà chi tiết mỗi nhân viên và mail lại khác nhau nhưng form chi tiết chỉ có 1, vậy có thể thêm code để gởi mail theo Data validation List và như chọn Data validation List là Nguyễn A thì khi nhấn nút “gởi” thì chỉ gởi đúng mail của Nguyễn A, mong bạn vui lòng hướng dẫn
Hướng dẫn rất hữu ích. Bạn ơi, mình có câu hỏi thêm là khi mình làm theo code thì mình phải nhấn nút 2 lần: 1 lần để kích hoạt VBA và 1 lần để bấm “OK” của “KutoolsforExcel”.
Mình đã chỉnh code tí để VBA auto nhập vùng cần gửi mail vào “KutoolsforExcel” rồi.
Có cách nào để mình cho code auto bấm OK cho mình luôn không?
Mong bạn chia sẻ thêm.
Cảm ơn bạn!
——————–
Sub EmailRange()
‘Update 20131209
Dim WorkRng As Range
On Error Resume Next
xTitleId = “KutoolsforExcel”
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox(“Range”, xTitleId, “F6:F17”, Type:=8)
Application.ScreenUpdating = False
WorkRng.Select
ActiveWorkbook.EnvelopeVisible = True
With ActiveSheet.MailEnvelope
.Item.To = “[email protected]”
.Item.Cc = “[email protected]”
.Item.Subject = “[Attention]Overdue Date”
.Item.Send
End With
Application.ScreenUpdating = True
End Sub
Ad ơi tôi sửa lại code cho phù hợp thực tế với mình sao mỗi lần gửi màn hình đều nhấp nháy hiện outlook ra, xin hướng dẩn khắc phục hiện tượng ạ , cảm ơn nhiều
Sub EmailRange()
‘Update 20131209
Dim WorkRng As Range
On Error Resume Next
xTitleId = “KutoolsforExcel”
YesNo = MsgBox(“Are U Sure ??”, vbQuestion + vbYesNo, xTitleId)
Select Case YesNo
Case vbYes
Range(“B2:C33”).Select
Set WorkRng = Application.InputBox(“Range”, xTitleId, WorkRng.Address, Type:=8)
Application.ScreenUpdating = False
WorkRng.Select
ActiveWorkbook.EnvelopeVisible = True
With ActiveSheet.MailEnvelope
Application.ScreenUpdating = False
.Introduction = “No Any Thing”
.Item.To = Range(“E3”)
.Item.Subject = “Thong Tin Den ”
.Item.Send
End With
Case vbNo
End Select
Application.ScreenUpdating = True
End Sub
không cho hiện cái thông báo “Allow” được không ạ?