如何修改VBA代码设置PDF打印的纵向布局与指定打印区域
修改VBA代码实现纵向PDF打印并使用指定打印区域
关键修改点:
- 强制设置打印方向为纵向
- 启用使用指定打印区域(修正原代码参数错误)
- 修复原代码中未定义的
trailing变量问题
修改后的完整代码:
Sub savePDFandEmail() Dim strPath As String, strFName As String Dim OutApp As Object, OutMail As Object ' 修复路径变量,移除未定义的trailing变量 strPath = Environ$("temp") & "\" strFName = ActiveWorkbook.Name strFName = Left(strFName, InStrRev(strFName, ".") - 1) & "_" & ActiveSheet.Name & ".pdf" ' 设置打印方向为纵向 ActiveSheet.PageSetup.Orientation = xlPortrait ' 导出PDF时使用指定打印区域(IgnorePrintAreas设为False) ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ strPath & strFName, Quality:=xlQualityStandard, _ IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False Set OutApp = CreateObject("Outlook.Application") Set OutMail = OutApp.CreateItem(0) On Error Resume Next With OutMail .to = Range("H8") .CC = Range("H9") .BCC = "" .Subject = Range("D1") .Body = Range("D2") & vbCr .Attachments.Add strPath & strFName '.Display '取消注释这行并注释.Send,可在发送前打开邮件窗口预览 .Send '保持此行不变则点击按钮直接发送邮件 End With Kill strPath & strFName On Error GoTo 0 Set OutMail = Nothing Set OutApp = Nothing End Sub
额外说明:
- 打印区域设置:运行代码前,需先在Excel中手动设置打印区域:选中目标区域 → 切换到「页面布局」选项卡 → 点击「打印区域」→ 选择「设置打印区域」。
- 纵向打印:代码中
ActiveSheet.PageSetup.Orientation = xlPortrait强制将当前工作表打印方向设为纵向,若需横向可改为xlLandscape。 - 路径修复:原代码中
trailing变量未定义会导致路径错误,已移除该变量,改为直接使用系统临时文件夹路径。
内容的提问来源于stack exchange,提问作者Simon Yip
相关产品推荐
相关产品推荐

