如何在VBA代码中更改PDF打印页面布局?

问题描述 投票:0回答:1

我正在使用下面的 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

excel vba pdf page-layout
1个回答
0
投票

关键是使用您正在打印的工作表的

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
属性。

© www.soinside.com 2019 - 2024. All rights reserved.