【问题标题】:Print multiple ranges from multiple sheets to PDF将多个范围从多张打印到 PDF
【发布时间】:2018-06-25 20:54:04
【问题描述】:

我在这个网站上做了很多研究,但没有找到解决我的问题的方法。我有一个包含多个工作表的工作簿,这些工作表具有需要打印的特定范围。不幸的是,这些范围需要以非常特定的顺序打印,以便月度报告,并且更容易将它们保存在单独的选项卡上。我创建了一个代码,允许我将它们打印到我的办公室打印机,但我希望能够合并这些工作表,然后将它们直接打印到 PDF。谁能帮我吗?如果没有,我可以继续使用打印宏。

谢谢!

问题/想法

1) 我可以选择范围,然后一次性将它们全部打印到一个 pdf 中吗?

2) 如果不是,它可能更容易打印到两个不同的 pdf(基于选项卡/工作表),然后在 adobe 中合并

这是我的代码:

Sub PrintOut()

Answer = MsgBox("Ahoy scallywag! Would ye like t' print scroll?",
vbYesNoCancel + vbInformation, "Application Message")

If Answer = vbYes Then Else Exit Sub

Application.ScreenUpdating = False

With ActiveSheet.PageSetup

.LeftMargin = Application.CentimetersToPoints(0.5)
.RightMargin = Application.CentimetersToPoints(0.5)
.TopMargin = Application.CentimetersToPoints(0.5)
.BottomMargin = Application.CentimetersToPoints(0.5)
.HeaderMargin = Application.CentimetersToPoints(0.2)
.FooterMargin = Application.CentimetersToPoints(0.2)
Worksheets("PTD and YTD Spend").PageSetup.CenterHorizontally = True
Worksheets("Leasing Detail").PageSetup.CenterHorizontally = True
Worksheets("PTD and YTD Spend").PageSetup.CenterVertically = True
Worksheets("Leasing Detail").PageSetup.CenterVertically = True

Sheets("PTD and YTD Spend").Select
ActiveSheet.PageSetup.PrintArea = "$G$3:$AG$32"
ActiveWindow.SelectedSheets.PrintOut

Sheets("Leasing Detail").Select
ActiveSheet.PageSetup.PrintArea = "$G$3:$AD$32"
ActiveWindow.SelectedSheets.PrintOut

Sheets("PTD and YTD Spend").Select
ActiveSheet.PageSetup.PrintArea = "$G$33:$AG$63"
ActiveWindow.SelectedSheets.PrintOut

Sheets("Leasing Detail").Select
ActiveSheet.PageSetup.PrintArea = "$G$33:$AD$63"
ActiveWindow.SelectedSheets.PrintOut

Sheets("PTD and YTD Spend").Select
ActiveSheet.PageSetup.PrintArea = "$G$64:$AG$93"
ActiveWindow.SelectedSheets.PrintOut

Sheets("Leasing Detail").Select
ActiveSheet.PageSetup.PrintArea = "$G$64:$AD$93"
ActiveWindow.SelectedSheets.PrintOut

Sheets("PTD and YTD Spend").Select
ActiveSheet.PageSetup.PrintArea = "$G$94:$AG$123"
ActiveWindow.SelectedSheets.PrintOut

Sheets("Leasing Detail").Select
ActiveSheet.PageSetup.PrintArea = "$G$94:$AD$123"
ActiveWindow.SelectedSheets.PrintOut

Sheets("PTD and YTD Spend").Select
ActiveSheet.PageSetup.PrintArea = "$G$124:$AG$153"
ActiveWindow.SelectedSheets.PrintOut

Sheets("Leasing Detail").Select
ActiveSheet.PageSetup.PrintArea = "$G$124:$AD$153"
ActiveWindow.SelectedSheets.PrintOut

Sheets("PTD and YTD Spend").Select
ActiveSheet.PageSetup.PrintArea = "$G$154:$AG$183"
ActiveWindow.SelectedSheets.PrintOut

Sheets("Leasing Detail").Select
ActiveSheet.PageSetup.PrintArea = "$G$154:$AD$183"
ActiveWindow.SelectedSheets.PrintOut

Sheets("PTD and YTD Spend").Select
ActiveSheet.PageSetup.PrintArea = "$G$184:$AG$216"
ActiveWindow.SelectedSheets.PrintOut

Sheets("Leasing Detail").Select
ActiveSheet.PageSetup.PrintArea = "$G$184:$AD$213"
ActiveWindow.SelectedSheets.PrintOut

Sheets(Array("PTD and YTD Spend", "Leasing Detail")).Select

ActiveWindow.SelectedSheets.PrintOut
Sheets("PTD and YTD Spend").Select 'Needed so that multiple sheets don't remain selected

End With
Application.ScreenUpdating = True

End Sub

【问题讨论】:

  • 将所有范围合并到一个工作表中,然后将工作表打印为 .pdf

标签: vba excel pdf printing


【解决方案1】:

您可以使用两种替代策略:

  1. Export each range to pdf 使用文件名序列。
  2. 使用某些工具(例如,pdftk)连接所有 pdf 文件。

  1. 创建一系列工作表,一个用于您要打印的每个区域。为此,您可以复制源工作表并删除不需要的内容,或者如果这会导致公式错误或设置打印区域的其他问题。
  2. 用工作表的名称和printout the array组成一个数组。

【讨论】:

    【解决方案2】:

    这个选项怎么样?

    Sub CreatePDF()
    
        ActiveWorkbook.Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Select
    
        Sheets("Sheet1").Activate
    
        ActiveSheet.ExportAsFixedFormat _
                Type:=xlTypePDF, _
                Filename:="C:\temp.pdf", _
                Quality:=xlQualityStandard, _
                IncludeDocProperties:=True, _
                IgnorePrintAreas:=False, _
                OpenAfterPublish:=True
    
        Sheets("Sheet1").Select
        Range("A1").Select
    
    End Sub
    

    我很确定有办法对其进行自定义和/或增强。

    【讨论】:

      猜你喜欢
      • 2012-07-16
      • 1970-01-01
      • 2019-06-09
      • 1970-01-01
      • 2016-04-26
      • 1970-01-01
      • 1970-01-01
      • 2014-04-08
      • 1970-01-01
      相关资源
      最近更新 更多