How to send / email range of cells through outlook from Excel?
In day-to-day work with Excel, it’s common to finish a report and then need to share just a portion of the data with a specific recipient. For example, you may want to send important information from a selected range of cells rather than the entire workbook, ensuring privacy and relevance. Naturally, most users prefer solutions that don’t require manually switching to Outlook or copying and pasting content. Are there practical, efficient ways to email a defined cell range directly from Excel?
This tutorial explores multiple methods for sending or emailing selected cells using Outlook—including both VBA solutions and built-in Excel features—to help streamline your workflow and reduce manual effort. You’ll find approaches for sending the range as an attachment, embedding cells in the message body, saving cell ranges as images/PDFs prior to sending, and using legacy Excel mail features. The guide also covers key setup steps, scenario analysis, troubleshooting tips, and practical advice for getting the best results.
Send range of cells as attachment from Excel with VBA code
Send range of cells as body from Excel with VBA code
Send range of cells as attachment from Excel with VBA code
If you want to share a specific set of data without granting access to the entire workbook, you can extract a designated cell range and send it as file attachment—such as an .xlsx or .xls document—via Outlook. This solution is especially valuable when the recipient needs to review only part of the report or when confidentiality is important. The following steps show how to set up and use the VBA code to automate this process:
1. Open your target Excel workbook. Press ALT + F11 to launch the Microsoft Visual Basic for Applications window, where you can insert and edit VBA code.
2. Click Insert > Module, which creates a new module for your code. Paste the below script into the module window.
VBA code: send range of cells as attachment from 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 Tips and customizations:
- .To specifies your recipient’s email. Replace with the intended email address.
- .CC and .BCC can be set for carbon copy or blind carbon copy as needed.
- .Subject and .Body allow you to personalize the email message.
3. Run the code by pressing F5. A selection prompt appears. Specify the range you wish to email (it’s advisable to confirm the data before sending). See example screenshot:

4. After clicking OK, you may encounter a progress prompt or permission notification. When finished, click Allow. The targeted cell range will be sent to your chosen recipient as an Excel file attachment.

Precautions & troubleshooting:
- If Outlook is not installed as your default mail program or not running, the code may not execute properly.
- Ensure that macro security settings allow running VBA scripts. You may need to enable macros or adjust Trust Center settings.
- Attachment types depend on the source file format and specified line in the VBA code.
- After sending, check your Outlook Sent Items to confirm delivery.
This approach is ideal for secure data sharing, record archiving, and situations requiring original Excel formatting. However, recipients will need appropriate software to open attached files.
Send range of cells as body from Excel with VBA code
In scenarios where you want recipients to view the information instantly without downloading attachments—such as periodic report summaries or progress updates—you can embed the selected cell range directly in the email body. This not only improves accessibility but also makes the information easier to read and faster to process for recipients.
1. Switch to the worksheet containing your data. Press ALT + F11 to access the Microsoft Visual Basic for Applications window.
2. Click Insert > Module to open a module window, then paste the following code:
VBA code: send range of cells as body from Excel
Sub EmailRange()
'Update by Extendoffice
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 Parameter notes and practical adjustments:
- .Introduction lets you include a message before the range itself.
- .Item.To should be updated with your desired email address.
- .Item.Subject can be revised to fit your report or email focus.
3. Run the macro using F5. When prompted, select the desired cell range you wish to send.

4. Confirm your selection and click OK. Monitor any security prompts. Once processed, click Allow to authorize the macro. The selected range will appear directly in your Outlook email body, formatted as a table.

Key reminders:
- This solution requires Outlook to be installed and set as your default mail program.
- Enable macros in Excel to run VBA successfully. If errors occur, check Trust Center macro settings.
- Formatting is retained—however, complex cell formats may display differently in email than in Excel.
- Visit your Outlook Outbox or Sent folder to confirm the message has been sent.
This approach works well for team status updates, quick data sharing, or distributing key figures to colleagues or clients who prefer immediate readability.
Other Built-in Excel Methods - Use the "Send to Mail Recipient" built-in feature to send selected cells as body
Some older versions of Excel (prior to Office 365) included a built-in “Send to Mail Recipient” button, which allows you to quickly email selected cells as the email body—no VBA required. While this feature is hidden by default in modern Excel, it is still available through Quick Access Toolbar customization. This solution works well for users on legacy Excel installations or those who prefer not to use macros.
How to enable and use:
- Right-click the Quick Access Toolbar (above your ribbon) and select Customize Quick Access Toolbar.
- From the command list, change “Choose commands from:” to All Commands.
- Scroll down and add Send to Mail Recipient to your Quick Access Toolbar.
- After setup, select the cells you want to send. Click the Send to Mail Recipient icon—Excel creates an embedded email window with the selection as the body. Add addresses, subject, and send directly.
Important notes:
- This method requires Outlook to be configured as your default mail client.
- Working with the embedded email window may feel different from regular Outlook composition—double-check formatting.
- This feature may be disabled or missing in certain Excel versions (especially newer Office365 builds). Consider VBA or PDF/image export solutions in these cases.
Pros and cons:
- Very quick and simple for supported versions; no code or advanced setup required.
- Not available in all versions; newer Excel users may need alternative methods.
Related articles:
How to send worksheet only through Outlook from Excel?
How to send current workbook through Outlook from Excel?
Best Office Productivity Tools
Supercharge Your Excel Skills with Kutools for Excel, and Experience Efficiency Like Never Before. Kutools for Excel Offers Over 300 Advanced Features to Boost Productivity and Save Time. Click Here to Get The Feature You Need The Most...
Office Tab Brings Tabbed interface to Office, and Make Your Work Much Easier
- Enable tabbed editing and reading in Word, Excel, PowerPoint, Publisher, Access, Visio and Project.
- Open and create multiple documents in new tabs of the same window, rather than in new windows.
- Increases your productivity by 50%, and reduces hundreds of mouse clicks for you every day!
All Kutools add-ins. One installer
Kutools for Office suite bundles add-ins for Excel, Word, Outlook & PowerPoint plus Office Tab Pro, which is ideal for teams working across Office apps.
- All-in-one suite — Excel, Word, Outlook & PowerPoint add-ins + Office Tab Pro
- One installer, one license — set up in minutes (MSI-ready)
- Works better together — streamlined productivity across Office apps
- 30-day full-featured trial — no registration, no credit card
- Best value — save vs buying individual add-in