如何通过Outlook仅从Excel发送工作表
在工作中,很多时候我们需要将Excel表格以邮件的形式发送给同事或客户。而Outlook作为Microsoft Office套件中的邮件客户端,能够很好地与Excel进行整合,直接将工作表以邮件的形式发送出去。本文将详细介绍如何通过Outlook仅从Excel发送工作表。
步骤一:打开Excel工作表
首先,我们需要打开要发送的Excel工作表。在工作表中,可以选择要发送的具体工作表,或者将整个Excel以附件形式发送。
步骤二:选择发送方式
在Excel工作表中,我们可以选择两种方式将表格发送出去:
1. 将整个Excel以附件形式发送
如果想将整个Excel以附件形式发送,则需要按照以下步骤操作:
- 点击Excel左上角的“文件”菜单
- 选择“分享”选项
- 点击“邮件”选项
- 在弹出的对话框中选择收件人,填写邮件主题和正文
- 点击“发送”按钮
此时,整个Excel表格将以附件形式发送到选择的收件人邮箱中。
2. 仅发送Excel中的一个工作表
如果想仅发送Excel中的一个工作表,则需要按照以下步骤操作:
- 打开要发送的工作表
- 选择要发送的工作表
- 点击“文件”菜单
- 选择“邮件”选项
- 在弹出的对话框中选择收件人,填写邮件主题和正文
- 将邮件格式设置为“HTML格式”
- 点击“插入”选项卡中的“表格”按钮,选择“工作表”
- 在弹出的对话框中选择要添加的工作表
- 点击“确定”按钮
- 完成编辑邮件正文后,点击“发送”按钮
此时,仅选择的工作表将以一个表格的形式嵌入到邮件正文中,发送到选择的收件人邮箱中。
步骤三:选择邮件格式
在前文中,我们已经提到需要将邮件格式设置为“HTML格式”。这是因为,在“纯文本”格式下,邮件的嵌入表格会失效,因此不能选择该方式发送。而“RTF格式”中的表格会出现较大的偏移,因此推荐使用“HTML格式”。
示例代码
以下是将工作表以附件形式发送的示例代码:
Sub SendExcelFileAsAttachment()
Dim OutApp As Object
Dim OutMail As Object
Dim FileExtension As String
Dim FileName As String
Dim FilePath As String
Dim FileAddress As String
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
'文件路径和名称,根据实际情况修改
FilePath = "C:\Users\User\Desktop\example.xlsx"
FileName = "example.xlsx"
FileAddress = FilePath & "\" & FileName
'附件名称和后缀
FileExtension = Right(FilePath, Len(FilePath) - InStrRev(FilePath, "."))
On Error Resume Next
With OutMail
.To = "example@qq.com"
.CC = ""
.BCC = ""
.Subject = "Excel表格邮件"
.Body = "请查收附件"
.Attachments.Add FileAddress, olByValue, 1
End With
OutMail.display '邮件发送前预览
OutMail.Send '直接发送邮件
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
以上代码将指定的Excel文件作为附件发送到指定的收件人邮箱中。
以下是将工作表以表格形式嵌入邮件正文发送的示例代码:
Sub SendExcelSheetAsEmail()
Dim OutApp As Object
Dim OutMail As Object
Dim FilePath As String
Dim FileExtension As String
Dim FileName As String
Dim SheetName As String
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
'文件路径和名称,根据实际情况修改
FilePath = "C:\Users\User\Desktop\example.xlsx"
FileName = "example.xlsx"
SheetName = "Sheet1" '要发送的工作表名称
'附加工作表到邮件正文
ActiveSheet.Copy
With ActiveSheet.UsedRange
.Copy
.PasteSpecial xlPasteValues
.PasteSpecial xlPasteFormats
End With
Application.CutCopyMode = False
'创建邮件
With OutMail
.To = "example@qq.com"
.Subject = "Excel表格邮件"
.HTMLBody = "请查收工作表:" & SheetName & "<br><br>" & RangetoHTML(ActiveSheet.UsedRange)
.display '邮件发送前预览
End With
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
'将工作表转化为HTML代码
Function RangetoHTML(rng As Range)
Dim fso As Object
Dim ts As Object
Dim TempFile As String
Dim TempWB As Workbook
TempFile = Environ$("temp") & "/" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm"
'复制范围并添加过时头,然后创建临时HTML文件
rng.Copy
Set TempWB = Workbooks.Add(1)
With TempWB.PublishObjects.Add( _
SourceType:=xlSourceRange, _
Filename:=TempFile, _
Sheet:=TempWB.Sheets(1).Name, _
Source:=TempWB.Sheets(1).UsedRange.Address, _
HtmlType:=xlHtmlStatic)
.Publish (True)
End With
'Read the created temp file, and add it to the email
Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.GetFile(TempFile).OpenAsTextStream(1, -2)
RangetoHTML = ts.ReadAll
ts.Close
RangetoHTML = Replace(RangetoHTML, "align=center x:publishsource=", _
"align=left x:publishsource=")
'Temp file cleanup
Kill TempFile
Set ts = Nothing
Set fso = Nothing
Set TempWB = Nothing
End Function
以上代码将指定的Excel文件中的指定工作表以邮件正文中的表格形式嵌入到邮件中,并发送到指定的收件人邮箱中。
结论
通过本文的介绍,我们了解到如何通过Outlook仅从Excel发送工作表。使用Excel中的“邮件”功能,我们可以方便地将工作表以附件或表格形式发送到指定的收件人邮箱中,提高协作和沟通的效率。希望本文能够对大家有所帮助。