German问是否有一种方法可以将工作簿中的一个工作表作为电子邮件附件发送而不发送整个工作簿。简短的答案是,您不能-工作表本身不能作为“实体”

存在。您可以将其附加到电子邮件。您只能将文件作为电子邮件附件发送,这意味着您必须具有要发送的工作簿文件。

当然,从单个工作表制作工作簿很容易。如果只需要偶尔执行一次,那么最简单的方法是按照以下步骤操作:

。右键单击要通过电子邮件发送的工作表的选项卡。

。从出现的上下文菜单中,选择移动或复制。 Excel将显示“移动或复制”对话框。 (请参见图1。)

。使用“到书”下拉列表中,选择“新书”。

。确保选中创建副本复选框。

。单击确定。

此时,您应该看到一个新工作簿,其中包含一个工作表,即您要发送的工作表的副本。保存此工作簿并通过电子邮件发送,您已经完成了想要做的事情。通过电子邮件发送后,您也可以从系统中删除该工作簿,因为您的工作表也仍在原始工作簿中。

如果您需要定期将当前工作表通过电子邮件发送给其他人,则可能需要创建一个宏来为您完成任务。您创建的宏将有所不同,具体取决于您所使用的电子邮件程序。因此,在本技巧中无法提供全面的基于宏的答案。但是,提供一个宏示例可以说明问题,该宏示例可以使用Outlook作为邮件程序通过电子邮件发送工作表。

Sub EmailWithOutlook()

Dim oApp As Object     Dim oMail As Object     Dim WB As Workbook     Dim FileName As String     Dim wSht As Worksheet     Dim shtName As String

Application.ScreenUpdating = False

' Make a copy of the active worksheet     ' and save it to a temporary file     ActiveSheet.Copy     Set WB = ActiveWorkbook

FileName = WB.Worksheets(1).Name     On Error Resume Next     Kill "C:\" & FileName     On Error GoTo 0     WB.SaveAs FileName:="C:\" & FileName

'Create and show the Outlook mail item     Set oApp = CreateObject("Outlook.Application")

Set oMail = oApp.CreateItem(0)

With oMail         'Uncomment the line below to hard code a recipient         '.To = "[email protected]"

'Uncomment the line below to hard code a subject         '.Subject = "Subject Line"

'Uncomment the lines below to hard code a body         '.body = "Dear John" & vbCrLf & vbCrLf & _           '"Here is the file you asked for"

.Attachments.Add WB.FullName         .Display     End With

'Delete the temporary file     WB.ChangeFileAccess Mode:=xlReadOnly     Kill WB.FullName     WB.Close SaveChanges:=False

'Restore screen updating and release Outlook     Application.ScreenUpdating = True     Set oMail = Nothing     Set oApp = Nothing End Sub

请注意,该宏有效地执行了先前步骤中所做的操作:

它将工作表复制到一个新的工作簿,然后通过电子邮件发送该工作簿。然后,它将删除工作簿,并使您恢复到正常使用Excel的状态。

宏将临时工作簿(正在发送的那份)保存到C:驱动器。如果您希望将工作簿保存在其他位置(或者由于系统限制而无法将文件保存到系统的根目录),只需在引用C:驱动器的两行代码中更改位置。

使用本技巧中详述的方法有一个潜在的缺点:当您将工作表的副本创建到新工作簿时,Excel可以使用复制的工作表中的某些引用来做一些有趣的事情。例如,假设您要从原始工作簿中复制并通过电子邮件发送Sheet1。但是,Sheet1在公式中包括对Sheet2和Sheet3中单元格的一些引用。当您将Sheet1的副本复制到新工作簿时,Excel会将这些引用保留回原始工作簿中的工作表。尽管可以将复制的Sheet1通过电子邮件发送给其他人,但是当该人尝试打开它时,由于他或她没有原始工作簿被引用,因此引用将不再正常工作。

有三种潜在的解决方案。显然,首先是要确保您不要通过电子邮件发送新工作簿中的单个工作表,而是发送收件人可能需要的所有工作表。第二种解决方案是使用复制和粘贴技术将值粘贴到新工作簿中。

最后,您可以复制原始工作表,然后在副本中搜索所有外部引用并消除它们。

如果您正在寻找有关如何使用各种程序通过电子邮件发送工作表的更深入的讨论,那么您肯定会希望访问以下网页:

http://www.rondebruin.nl/win/section1.htm

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(8508)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。您可以在此处为Excel的较早菜单界面找到此技巧的版本: