How to apply a button to send email with current Word file attached?
If you need to send an email message from a Word document via Outlook, and attach the current Word file as well, you can create a command button, and then, send the message by clicking this button without opening the Outlook. This article, I will introduce how to deal with it quickly and easily.
Please do with the following steps for solving this job in Word file:
1. First, you should create a command button, please click Developer > Legacy Tools > Command Button(ActiveX Control), see screenshot:
2. Select the button, and click Properties under the Developer tab, in the Properties pane, type the caption text you need into the Caption field, see screenshot:
3. Then, close the Properties pane, now, right click the button, and choose View Code, see screenshot:
4. And then, in the displayed Microsoft Visual Basic for Applications window, copy and paste the below code between the original scripts, see screenshot:
Dim xOutlookObj As Object Dim xEmail As Object Dim xDoc As Document Application.ScreenUpdating = False Set xOutlookObj = CreateObject("Outlook.Application") Set xEmail = xOutlookObj.CreateItem(olMailItem) Set xDoc = ActiveDocument xDoc.Save With xEmail .Subject = "Fax-data" .Body = "This is a test email." .To = "firstname.lastname@example.org" .Importance = olImportanceNormal .Attachments.Add xDoc.FullName .Display End With Set xDoc = Nothing Set xEmail = Nothing Set xOutlookObj = Nothing Application.ScreenUpdating = True
Note: In the above code, you should change the subject, body text or sent address to your need.
5. Then, save and close this code, click Design Mode to turn off the design mode. Now, when clicking the command button you have created, an email will be created with the current Word document as attachment, see screenshot:
6. At last, you just need to click Send button to send this message.
Recommended Word Productivity Tools
- Complicated and repeated operations can be done one-time processing in seconds.
- Insert multiple images across folders into Word document at once.
- Merge and combine multiple Word files across folders into one with your desired order.
- Split the current document into separate documents according to heading, section break or other criteria.
- Convert files between Doc and Docx, Docx and PDF, collection of tools for common conversions and selection, and so on...
You are guest ( Sign Up? )
or post as a guest, but your post won't be published automatically.
- To post as a guest, your comment is unpublished.· 1 months agoI had it working at first, and then for some reason now, it gives me an error of error 429 about activeX component can't create object. i literally just copied and pasted. This worked before but i just changed font size, made button bigger, and relabeled caption. i don't think i accidentally changed some other settings? any idea what it could be?
- To post as a guest, your comment is unpublished.· 1 months agoI have made a fillable form in MS word. I have used legacy tools for calculation etc. I have also added a submit button which works to send the form to email. The problem is that when I reopen this document after saving, it does not work. I have even tried saving it as macro enabled document but no use. Can you please help ?
- To post as a guest, your comment is unpublished.· 2 months agoCan this be done so you only send one page of a document?
- To post as a guest, your comment is unpublished.· 1 months agoHello, Don,
To deal with your task, please apply the below code，in the code, you should change the start page and end page to your own:
Private Sub CommandButton1_Click()
Dim xCurPageStart As Long, xCurPageEnd As Long, xCurPageRange As Range
Dim xCurPage As Integer, xPages As Integer
Dim xOutlookObj As Object
Dim xEmail As Object
Dim xDoc As Document, xNewDoc As Document
Dim xFilePath As String
Dim xOldStart As Long, xOldEnd As Long
On Error Resume Next
Application.ScreenUpdating = False
Set xOutlookObj = CreateObject("Outlook.Application")
Set xEmail = xOutlookObj.CreateItem(olMailItem)
xFilePath = CreateObject("WScript.Shell").SpecialFolders(16)
Set xDoc = ActiveDocument
xOldStart = xDoc.Application.Selection.Start
xOldEnd = xDoc.Application.Selection.End
xFilePath = xFilePath + "\attached file" + VBA.Mid(xDoc.FullName, VBA.InStrRev(xDoc.FullName, ".")) 'attached file is the attachment file name,change to your need
xCurPageStart = 2 'start page
xCurPageEnd = 2 'end page
xPages = Selection.Information(wdNumberOfPagesInDocument)
xCurPageStart = Selection.GoTo(what:=wdGoToPage, Which:=wdGoToNext, Name:=xCurPageStart).Start
If xCurPage = xPages Then
xCurPageEnd = ActiveDocument.Content.End
xCurPageEnd = Selection.GoTo(what:=wdGoToPage, Which:=wdGoToNext, Name:=xCurPageEnd + 1).Start
Set xCurPageRange = ActiveDocument.Range(xCurPageStart, xCurPageEnd)
Set xNewDoc = Application.Documents.Add(Visible:=False)
.Subject = "Fax-data"
.Body = "This is a test email."
.To = "email@example.com"
.Importance = olImportanceNormal
Set xDoc = Nothing
Set xEmail = Nothing
Set xOutlookObj = Nothing
Application.ScreenUpdating = True
- To post as a guest, your comment is unpublished.· 2 months agoHi Extend Office Team,
I believe 'xEmile' is misspelt. It should be 'xEmail'.
While the code runs and there is no issue, the following statement will do nothing:
Set xEmail = Nothing
- To post as a guest, your comment is unpublished.· 2 months agoHi，Abhi,
Thank you for your comment, as you said, the 'xEmile' is misspelt, it should be 'xEmail'. I have updated the code.
Thank you again!
- To post as a guest, your comment is unpublished.· 7 months agoHola, me podrían apoyar para que el archivo se convierta en PDF y se adjunte al correo en ves del word por favor.
- To post as a guest, your comment is unpublished.· 1 years agoI am trying to have the email send with the subject line being the contents of one of my fields. Is this possible?