跳至主要内容

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

Author: Siluvia Last Modified: 2025-07-31

在日常工作中,您可能经常需要与同事或客户分享特定的工作表,但又希望确保文件格式固定且安全。通过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 Functions
热门功能:查找、选中项的背景色或标记重复项|删除空行|合并列或单元格且不丢失数据|四舍五入(无公式)...
高级 LOOKUP多条件查找 (VLookup)多值查找 (VLookup)多表查找 (VLookup Across Multiple Sheets)模糊查找 (Fuzzy Lookup)...
高级下拉列表快速创建下拉列表依赖型下拉列表多选下拉列表...
列管理器添加指定数量的列移动列切换隐藏列的可见状态比较区域及列...
特色功能网格聚焦设计视图增强编辑栏工作簿 & 工作表管理器资源库(自动文本)|日期提取合并数据加密/解密单元格按列表发送电子邮件超级筛选特殊筛选(筛选粗体/倾斜/删除线等)...
热门15 大工具集12 款文本工具添加文本删除特定字符等)50+ 种图表 类型甘特图等)40+ 实用公式基于生日计算年龄等)19 款插入工具插入二维码按路径插入图片等)12 种转换工具小写金额转大写汇率转换等)7 款合并与分割工具高级合并行分割单元格等)...更多精彩等你发现
使用 Kutools,支持您的首选语言——包括英语、西班牙语、德语、法语、中文及40 多种其他语言!

用 Kutools for Excel 加速你的 Excel 技能,体验前所未有的高效办公。 Kutools for Excel 提供300 多项高级功能,助您提升效率,节省大量时间。点击此处,获取你最需要的功能...


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

  • 在 Word、Excel、PowerPoint 启用标签式编辑和阅读
  • 在同一窗口的新标签中打开和创建多个文档,无需新建窗口。
  • 办公效率提升50%,每天帮你减少上百次鼠标点击!