如何将工作表另存为PDF文件并通过Outlook作为附件发送?
在日常工作中,您可能经常需要与同事或客户分享特定的工作表,但又希望确保文件格式固定且安全。通过Outlook将工作表作为PDF文件发送是一个常见需求,特别是用于记录报表、发送发票或分享不应轻易修改的最终数据时。传统方法包括手动将工作表保存为PDF,打开Outlook,撰写邮件,附加PDF,然后发送——这个过程繁琐且耗时,尤其是当需要频繁重复或处理多个工作表时。
本文将逐步指导您如何自动化将工作表转换为PDF并直接从Excel将其作为附件添加到Outlook邮件的过程,帮助您节省大量时间并避免重复的手动操作。您会找到一个VBA代码解决方案,以及关于操作、优势、应用场景和实用技巧的详细信息。
使用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文件的目标文件夹,然后点击确定继续。
注意事项和实用提示:
4. 过程完成后,将生成一个新的Outlook邮件窗口,并附上PDF文件。主题行预填了工作表名称并以“.pdf”结尾;您可以编辑邮件内容,添加收件人,然后根据需要发送。这减少了错误并提高了效率,优于手动添加附件。
当您需要定期将最终版工作表作为PDF附件分发时,这种基于VBA的方法最为高效,并能最大程度减少重复的手动步骤。其局限性包括依赖Outlook,无法一次批量处理多个工作表,以及需要启用宏。对于更复杂的工作流程,例如一次性发送多个工作表或其他自动化功能,可以考虑使用Excel插件或内置功能。
替代方案:如果VBA宏不适合您的环境,例如当宏受到限制时,您可以手动使用Excel内置的导出或另存为功能将工作表保存为PDF,然后在Outlook中附加并发送。此方法虽然需要更多步骤,但无需特殊权限或脚本知识即可普遍使用。
轻松一次性将工作表或多个工作表保存为单独的PDF文件:
Kutools for Excel 的分割工作簿工具可以帮助您轻松一次性将工作表或多个工作表保存为单独的PDF文件,如下方演示所示。立即下载并试用!(30-天免费试用)
相关文章:
- 如何将Excel文件名保存为带时间戳的文件?
- 如何使用另存为功能自动覆盖Excel中的现有文件?
- 如何在Excel中将多个/所有工作表保存或导出为单独的CSV或文本文件?
- 如何禁用或不允许在Excel中使用保存和另存为选项?
- 如何在Excel中禁用工作簿保存但仅允许另存为?
最佳 Office 办公效率工具
🤖 | Kutools AI 助手:基于智能执行,彻底革新数据分析 |生成代码|创建自定义公式|分析数据并生成图表|调用 Kutools Functions… |
热门功能:查找、选中项的背景色或标记重复项|删除空行|合并列或单元格且不丢失数据|四舍五入(无公式)... | |
高级 LOOKUP:多条件查找 (VLookup)|多值查找 (VLookup)|多表查找 (VLookup Across Multiple Sheets)|模糊查找 (Fuzzy Lookup)... | |
高级下拉列表:快速创建下拉列表|依赖型下拉列表|多选下拉列表... | |
列管理器:添加指定数量的列 |移动列 |切换隐藏列的可见状态| 比较区域及列... | |
特色功能:网格聚焦|设计视图|增强编辑栏|工作簿 & 工作表管理器|资源库(自动文本)|日期提取|合并数据|加密/解密单元格|按列表发送电子邮件|超级筛选|特殊筛选(筛选粗体/倾斜/删除线等)... | |
热门15 大工具集:12 款文本工具(添加文本、删除特定字符等)|50+ 种图表 类型(甘特图等)|40+ 实用公式(基于生日计算年龄等)|19 款插入工具(插入二维码、按路径插入图片等)|12 种转换工具(小写金额转大写、汇率转换等)|7 款合并与分割工具(高级合并行、分割单元格等)|...更多精彩等你发现 |
用 Kutools for Excel 加速你的 Excel 技能,体验前所未有的高效办公。 Kutools for Excel 提供300 多项高级功能,助您提升效率,节省大量时间。点击此处,获取你最需要的功能...
Office Tab 为 Office 带来标签式界面,让你的工作更加轻松
- 在 Word、Excel、PowerPoint 启用标签式编辑和阅读
- 在同一窗口的新标签中打开和创建多个文档,无需新建窗口。
- 办公效率提升50%,每天帮你减少上百次鼠标点击!