跳至主要内容

Kutools for Office — 一套工具,五种功能。事半功倍。

如何将工作表另存为PDF文件并通过Outlook作为附件发送?

Author: Siluvia Last Modified: 2025-08-22

在日常工作中,您可能经常需要与同事或客户分享特定的工作表,但又希望确保文件格式固定且安全。通过Outlook将工作表作为PDF文件发送是一个常见需求,特别是用于记录报表、发送发票或分享不应轻易修改的最终数据时。传统方法包括手动将工作表保存为PDF,打开Outlook,撰写邮件,附加PDF,然后发送——这个过程繁琐且耗时,尤其是当需要频繁重复或处理多个工作表时。

本文将逐步指导您如何自动化将工作表转换为PDF并直接从Excel将其作为附件添加到Outlook邮件的过程,帮助您节省大量时间并避免重复的手动操作。您会找到一个VBA代码解决方案,以及关于操作、优势、应用场景和实用技巧的详细信息。

使用VBA代码将工作表保存为PDF文件并作为附件发送


使用VBA代码将工作表保存为PDF文件并作为附件发送

为了加快将Excel工作表导出为PDF文件并通过Outlook发送的过程,您可以使用以下VBA代码。如果您需要定期直接从Excel发送个性化报告、发票或其他数据快照,这种方法尤其有用,因为它完全自动化了保存和发送步骤。

在应用此方法之前,请确保已安装Microsoft Outlook并将其设置为默认邮件客户端。在Excel环境中启用宏时,此代码效果最佳。

1. 打开要保存并作为PDF发送的工作表。同时按下Alt + F11键以启动Microsoft Visual Basic for Applications(VBA)编辑器。

2. 在VBA窗口中,前往菜单并点击插入 > 模块。这将创建一个新的代码模块。然后将以下VBA代码复制并粘贴到模块的代码窗口中。

VBA代码:将工作表保存为PDF文件并作为附件发送

Sub Saveaspdfandsend()
Dim xSht As Worksheet
Dim xFileDlg As FileDialog
Dim xFolder As String
Dim xYesorNo As Integer
Dim xOutlookObj As Object
Dim xEmailObj As Object
Dim xUsedRng As Range

Set xSht = ActiveSheet
Set xFileDlg = Application.FileDialog(msoFileDialogFolderPicker)

If xFileDlg.Show = True Then
   xFolder = xFileDlg.SelectedItems(1)
Else
   MsgBox "You must specify a folder to save the PDF into." & vbCrLf & vbCrLf & "Press OK to exit this macro.", vbCritical, "Must Specify Destination Folder"
   Exit Sub
End If
xFolder = xFolder + "\" + xSht.Name + ".pdf"

'Check if file already exist
If Len(Dir(xFolder)) > 0 Then
    xYesorNo = MsgBox(xFolder & " already exists." & vbCrLf & vbCrLf & "Do you want to overwrite it?", _
                      vbYesNo + vbQuestion, "File Exists")
    On Error Resume Next
    If xYesorNo = vbYes Then
        Kill xFolder
    Else
        MsgBox "if you don't overwrite the existing PDF, I can't continue." _
                    & vbCrLf & vbCrLf & "Press OK to exit this macro.", vbCritical, "Exiting Macro"
        Exit Sub
    End If
    If Err.Number <> 0 Then
        MsgBox "Unable to delete existing file.  Please make sure the file is not open or write protected." _
                    & vbCrLf & vbCrLf & "Press OK to exit this macro.", vbCritical, "Unable to Delete File"
        Exit Sub
    End If
End If

Set xUsedRng = xSht.UsedRange
If Application.WorksheetFunction.CountA(xUsedRng.Cells) <> 0 Then
    'Save as PDF file 
    xSht.ExportAsFixedFormat Type:=xlTypePDF, Filename:=xFolder, Quality:=xlQualityStandard
    
    'Create Outlook email 
    Set xOutlookObj = CreateObject("Outlook.Application")
    Set xEmailObj = xOutlookObj.CreateItem(0)
    With xEmailObj
        .Display
        .To = ""
        .CC = ""
        .Subject = xSht.Name + ".pdf"
        .Attachments.Add xFolder
        If DisplayEmail = False Then
            '.Send
        End If
    End With
Else
  MsgBox "The active worksheet cannot be blank"
  Exit Sub
End If
End Sub

3. 粘贴代码后,按F5或在VBA编辑器中点击运行以执行宏。将出现一个文件夹选择对话框。选择应保存PDF文件的目标文件夹,然后点击确定继续。

run vba code to select a folder to save this PDF file

注意事项和实用提示

1. 该宏会创建一个与工作表同名的PDF文件,并存储在您选择的文件夹中。
2. 如果您尝试在活动工作表为空的情况下运行代码,您会看到类似下图所示的警告对话框。这样可以防止意外保存和发送空白PDF。为避免这种情况,请确保在执行宏之前工作表中有内容。

If the active worksheet is blank,a warning prompt box is popped out

4. 过程完成后,将生成一个新的Outlook邮件窗口,并附上PDF文件。主题行预填了工作表名称并以“.pdf”结尾;您可以编辑邮件内容,添加收件人,然后根据需要发送。这减少了错误并提高了效率,优于手动添加附件。

a new Outlook email is created with the PDF file as an attachment

注意:只有在安装并设置Microsoft Outlook为默认邮件客户端时,该宏才有效。如果您使用其他电子邮件程序,此解决方案可能不适用。

当您需要定期将最终版工作表作为PDF附件分发时,这种基于VBA的方法最为高效,并能最大程度减少重复的手动步骤。其局限性包括依赖Outlook,无法一次批量处理多个工作表,以及需要启用宏。对于更复杂的工作流程,例如一次性发送多个工作表或其他自动化功能,可以考虑使用Excel插件或内置功能。

替代方案:如果VBA宏不适合您的环境,例如当宏受到限制时,您可以手动使用Excel内置的导出另存为功能将工作表保存为PDF,然后在Outlook中附加并发送。此方法虽然需要更多步骤,但无需特殊权限或脚本知识即可普遍使用。


轻松一次性将工作表或多个工作表保存为单独的PDF文件:

Kutools for Excel分割工作簿工具可以帮助您轻松一次性将工作表或多个工作表保存为单独的PDF文件,如下方演示所示。立即下载并试用!(30-天免费试用)

save multiple worksheets as separate PDF files by kutools


相关文章:

最佳Office办公效率工具

🤖 Kutools AI 助手:以智能执行为基础,彻底革新数据分析 |代码生成 |自定义公式创建|数据分析与图表生成 |调用Kutools函数……
热门功能:查找、选中项的背景色或标记重复项 | 删除空行 | 合并列或单元格且不丢失数据 | 四舍五入……
高级LOOKUP多条件VLookup|多值VLookup|多表查找|模糊查找……
高级下拉列表快速创建下拉列表 |依赖下拉列表 | 多选下拉列表……
列管理器添加指定数量的列 | 移动列 | 切换隐藏列的可见状态 | 比较区域与列……
特色功能网格聚焦 |设计视图 | 增强编辑栏 | 工作簿及工作表管理器 | 资源库(自动文本) | 日期提取 | 合并数据 | 加密/解密单元格 | 按名单发送电子邮件 | 超级筛选 | 特殊筛选(筛选粗体/倾斜/删除线等)……
15大工具集12项 文本工具添加文本删除特定字符等)|50+种 图表 类型甘特图等)|40+实用 公式基于生日计算年龄等)|19项 插入工具插入二维码从路径插入图片等)|12项 转换工具小写金额转大写汇率转换等)|7项 合并与分割工具高级合并行分割单元格等)| ……
Kutools支持多种语言——可选择英语、西班牙语、德语、法语、中文等40多种语言!

通过Kutools for Excel提升您的Excel技能,体验前所未有的高效办公。 Kutools for Excel提供300多项高级功能,助您提升效率并节省时间。 点击此处获取您最需要的功能……


Office Tab为Office带来多标签界面,让您的工作更加轻松

  • 支持在Word、Excel、PowerPoint中进行多标签编辑与阅读
  • 在同一个窗口的新标签页中打开和创建多个文档,而不是分多个窗口。
  • 可提升50%的工作效率,每天为您减少数百次鼠标点击!

所有Kutools加载项,一键安装

Kutools for Office套件包含Excel、Word、Outlook和PowerPoint的插件,以及Office Tab Pro,非常适合跨Office应用团队使用。

Excel Word Outlook Tabs PowerPoint
  • 全能套装——Excel、Word、Outlook和PowerPoint插件+Office Tab Pro
  • 单一安装包、单一授权——数分钟即可完成设置(支持MSI)
  • 协同更高效——提升Office应用间的整体工作效率
  • 30天全功能试用——无需注册,无需信用卡
  • 超高性价比——比单独购买更实惠