如何在Excel VBA代码上设置固定边距(PDF以2页而不是1页打印)

时间:2017-11-22 19:29:18

标签: excel vba excel-vba pdf

我有一个Excel文件,其中有一个按钮"生成PDF"运行一个宏来打印某个工作表(让我们称之为#34; QUOTE")到PDF。这张表的边距很有限,在我的电脑中,创建的PDF具有完美的结构:所有内容都包含在1页中。但是,在某些其他计算机中,创建PDF时,所有内容都不适合1页,而第2页是使用一些内容创建的。这是代码(包括通过限制边距来解决此问题的尝试):

Sub Excel_Export_Proposal()

Dim wb As Workbook: Set wb = ThisWorkbook
Dim wsCOTIZACION As Worksheet
Dim Proposalname As String
Dim iVis As XlSheetVisibility
Dim xlName As Excel.Name
Dim FolderPath As String
Dim myRange As String

Set wsQUOTE = ThisWorkbook.Sheets("QUOTE")

FolderPath = ActiveWorkbook.Path & "\"


Proposalname = "Quote for " & CStr(Range("B2").Value)

wsQUOTE.PageSetup.PrintArea = myRange
With wsQUOTE.PageSetup
.FitToPagesTall = 1
.FitToPagesWide = False
.Zoom = False
.LeftMargin = Application.InchesToPoints(0.7)
.RightMargin = Application.InchesToPoints(0.4)
.BottomMargin = Application.InchesToPoints(0.75)
.TopMargin = Application.InchesToPoints(0.75)


End With

'Proposal
Application.ScreenUpdating = False
wb.Unprotect
With wsQUOTE
iVis = .Visible
.Visible = xlSheetVisible
.ExportAsFixedFormat Type:=xlTypePDF, _
                     Filename:=ActiveWorkbook.Path & "\" & Proposalname & ".pdf", _
                     Quality:=xlQualityStandard, _
                     IncludeDocProperties:=True, _
                     IgnorePrintAreas:=True, _
                     OpenAfterPublish:=True


.Visible = iVis

wsQUOTE.Activate


End With



wb.Protect 
Application.ScreenUpdating = True
End Sub

有人可以帮我解决这个问题吗?我希望无论生成的计算机或软件是什么,我们都能完美地打印这张纸......

1 个答案:

答案 0 :(得分:3)

为了在一个页面中使用包含Excel_Export_Proposal的{​​{1}}程序,应始终应用以下调整:

  1. 正确设置打印区域:
    此行设置打印区域:PrintingArea
    但是,在此行之前没有为变量wsQUOTE.PageSetup.PrintArea = myRange分配值,因此myRange设置为PrintArea,相当于将其设置为{{""的整个UsedRange 1}}表。

  2. 为确保整个wsQUOTE打印在一个页面中,PrintAreaFitToPagesTall必须设置为1 将FitToPagesWide替换为.FitToPagesWide = False
    在将.FitToPagesWide = 1.Zoom = False设置为1

  3. 后,将FitToPagesTall移除后,将其移除
  4. 要确保FitToPagesWide方法使用目标Excel文件中定义的打印区域,请将ExportAsFixedFormat参数设置为IgnorePrintAreas
    将此行False替换为此行IgnorePrintAreas:=True, _

  5. 以下是修订后的程序:

    IgnorePrintAreas:=False, _

    有关所用资源的其他信息,请参阅以下页面:

    Worksheet.ExportAsFixedFormat Method (Excel)
    PageSetup Object (Excel)