如何将工作表保存为PDF文件并通过Outlook作为附件发送?
Author: Siluvia Last Modified: 2025-05-07
在某些情况下,您可能需要通过Outlook将工作表作为PDF文件发送。通常,您必须手动将工作表保存为PDF文件,然后在Outlook中创建一封新邮件并将此PDF文件作为附件,最后再发送出去。一步一步手动完成这些操作非常耗时。本文将向您展示如何快速将工作表保存为PDF文件,并通过Excel中的Outlook自动将其作为附件发送。
使用VBA代码将工作表保存为PDF文件并作为附件发送
您可以运行以下VBA代码,自动将当前活动工作表保存为PDF文件,然后通过Outlook将其作为附件发送。请按照以下步骤操作。
1. 打开要保存为PDF并发送的工作表,然后同时按下 Alt + F11 键以打开 Microsoft Visual Basic for Applications 窗口。
2. 在 Microsoft Visual Basic for Applications 窗口中,点击 插入 > 模块。然后复制并将以下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 键运行代码。在“浏览”对话框中,请选择一个文件夹来保存此PDF文件,然后点击 确定 按钮。
注意:
1. 当前活动工作表现在已保存为PDF文件,并且PDF文件以工作表名称命名。
2. 如果当前活动工作表为空,则在单击 确定 按钮后,您会看到如下截图所示的对话框。
4. 现在已创建了一封新的Outlook电子邮件,您可以看到PDF文件列在附件字段中。参见截图:
5. 请撰写这封邮件,然后发送它。
6. 仅当您使用Outlook作为邮件程序时,此代码才有效。
轻松一次性将一个或多个工作表保存为单独的PDF文件:
Kutools for Excel 的 分割工作簿 工具可以帮助您轻松地一次性将一个或多个工作表保存为单独的PDF文件,如下方演示所示。立即下载并试用!(30-天免费试用)
相关文章:
- 如何将Excel文件名保存为带时间戳的格式?
- 如何使用“另存为”功能在Excel中自动覆盖现有文件?
- 如何在Excel中将多个/所有工作表保存或导出为单独的CSV或文本文件?
- 如何在Excel中禁用或不允许“保存”和“另存为”选项?
- 如何在Excel中禁用工作簿保存但只允许“另存为”?
最佳办公效率工具
🤖 | Kutools AI 助手:基于智能执行、生成代码、创建自定义公式、分析数据并生成图表、调用 Kutools 函数等功能,彻底改变数据分析方式… |
热门功能:查找、高亮或标记重复项 | 删除空行 | 合并不丢失数据的列或单元格 | 四舍五入 ... | |
高级 LOOKUP:多条件 VLookup | 多值 VLookup | 多表查找 | 模糊查找 .... | |
高级下拉列表:快速创建下拉列表 | 从属下拉列表 | 多选下拉列表 .... | |
列管理器: 添加指定数量的列 | 移动列 | 切换隐藏列的可见状态 | 比较区域和列 ... | |
精选功能:网格聚焦 | 设计视图 | 增强编辑栏 | 工作簿与工作表管理器 | 资源库(自动文本) | 日期提取 | 合并数据 | 加密/解密单元格 | 按列表发送电子邮件 | 超级筛选 | 特殊筛选(筛选粗体/斜体/删除线...)... | |
排名前 15 的工具集: 12 种文本 工具(添加文本、删除特定字符等) | 50 多 种图表 类型(甘特图等) | 40 多种实用 公式(基于生日计算年龄等) | 19 种插入 工具(插入二维码、根据路径插入图片等) | 12 种转换 工具(小写金额转大写、汇率转换等) | 7 种合并与分割 工具(高级合并行、分割单元格等) | 还有更多... |
使用 Kutools for Excel 提升您的 Excel 技能,体验前所未有的高效。 Kutools for Excel 提供超过 300 种高级功能来提高生产力并节省时间。 单击此处获取您最需要的功能...
Office Tab 将标签式界面引入 Office,让您的工作更加轻松
- 在 Word、Excel、PowerPoint 中启用标签式编辑和阅读。
- 在同一窗口的新标签页中打开和创建多个文档,而不是在新窗口中进行操作。
- 将您的生产力提升 50%,每天为您减少数百次鼠标点击!