我正在使用下面的 VBA 代码来 PDF 打印 Excel 工作表并通过电子邮件发送 PDF 打印。
Sub savePDFandEmail()
Dim strPath As String, strFName As String
Dim OutApp As Object, OutMail As Object
strPath = Environ$("temp") & "\" & trailing & "\"
strFName = ActiveWorkbook.Name
strFName = Left(strFName, InStrRev(strFName, ".") - 1) & "_" &
ActiveSheet.Name & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
strPath & strFName, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=True,
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 'Uncomment Display and comment .send to bring up an
email window before sending
.Send 'Keep this the same if you want to send the email
address out on click of the button
End With
Kill strPath & strFName
On Error GoTo 0
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
由于我编码能力较弱,我想知道如何编辑代码,以便将 PDF 打印页面布局更改为纵向模式和选定打印区域。
请帮忙。谢谢。
我将 IgnorePrintAreas 更改为 True,但 PDF 打印的输出没有任何区别。
我希望我可以在选定的打印区域和纵向模式下打印 PDF
关键是使用您正在打印的工作表的
PageSetup
属性。有关信息,请参阅页面设置。
在
ActiveSheet.ExportAsFixedFormat
行之前添加:
ActiveSheet.PageSetup.Orientation = xlPortrait
ActiveSheet.PageSetup.PrintArea = "B2:G16"
...但是将传递到
.PrintArea
的字符串更改为您要打印的区域。然后还将 IgnorePrintAreas:=True
更改为 IgnorePrintAreas:=False
。
另外一点是,如果您创建 Worksheet 对象并向其分配
ActiveSheet
,您会发现创建代码并发现哪些属性可用更加容易。例如:
Dim wks As Worksheet
Set wks = ActiveSheet
...然后当您输入
wks.
时,您将获得“智能感知”,包括 PageSetup
属性。