【问题标题】:removing all page breaks such that excel>pdf only prints on page删除所有分页符,以便 excel>pdf 仅在页面上打印
【发布时间】:2021-03-31 09:58:00
【问题描述】:

我有一堆希望保存为 pdf 的工作表。我能够这样做,但它不断将我的数据分成随机位。我想制作一个代码来删除所有分页符,以便将 pdf 打印为一页。关于如何做到这一点的任何想法?谢谢!下面是我试图在将工作表另存为 pdf 之前删除分页符的代码,但它不起作用。

编辑:我尝试循环它以删除所有分页符,但是一旦没有更多的分页符,我就无法让它停止。任何人都可以在所有分页符消失后帮助我结束循环吗?

Sub pdf2()
'saving the answers as pdf
Dim x As Integer
Dim y As Integer
Dim mywsname As String
Workbooks("Book1").Activate 'select workbook where sheets are at
For y = 1 To Application.Sheets.Count 'loop through and save all sheets as pdf
Sheets(y).Select
mywsname = ActiveSheet.Name
x = 1 'attempt to remove all page breaks
ActiveWindow.View = xlPageBreakPreview
For x = 1 To ActiveSheet.VPageBreaks.Count + 2
ActiveSheet.VPageBreaks(1).DragOff Direction:=xlToRight, RegionIndex:=1
Next x
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\Users\TMSVC\docs\" & mywsname & ".pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
Next y
End Sub

【问题讨论】:

  • 恐怕导出到 pdf 会为每个 excel 页面执行此操作。如果将光标移动到 pdf(打开)文档的左下方,您可以看到页面大小... Excel 看起来不接受自定义页面大小。它(也许)可以将其打印为 pdf(Adobe PDF,如果安装了 Acrobat)设置一个能够包含所有页面高度的自定义页面。我不知道“Microsoft print to pdf”如何处理这样的问题。我从来没有尝试过。我认为以某种方式分析工作表的结构并在适合良好外观的地方设置分页符(pdf格式)应该更好(更安全)...
  • .DisplayPageBreaks 只会改变分页符的可见性,它不会(据我所知)改变任何打印内容。
  • 如果您只想在一页上打印,可能想看看ActiveSheet.PageSetup.FitToPagesWide = 1ActiveSheet.PageSetup..FitToPagesTall = 1?您可以尝试在设置打印页面时录制宏,然后使用它。
  • 嘿伙计,感谢您的回复!遗憾的是,FitToPages 根本不起作用。我也尝试过录制宏,但我的工作表大小不同,所以它不起作用。本质上,我希望删除所有分页符,以便仅将其打印为一页。我想需要像 xlright 和 down 这样的东西,而不仅仅是录制宏。谁能指导我正确的方向?谢谢
  • @FaneDuru 是的,似乎是这样,我还没有看到有人使用 vba 来做到这一点 - 我猜每个人都在手动将分页符拖到他们想要的位置。

标签: excel vba


【解决方案1】:

解决了我自己的问题:以防万一有人遇到同样的问题。此代码会将现有工作表另存为 pdf 并删除所有分页符、循环并将工作簿中的所有工作表另存为单独的 pdf。 pdf 的名称将是工作表名称。

Sub pdf2()
'saving the answers as pdf
Dim x As Integer
Dim y As Integer
Dim mywsname As String
Workbooks("YourBook").Activate 'select workbook where sheets are at. **Please edit your workbook!**
For y = 1 To Application.Sheets.Count 'loop through and save all sheets as pdf
Sheets(y).Select
mywsname = ActiveSheet.Name

x = 1  'remove all page breaks
ActiveWindow.View = xlPageBreakPreview
Do
ActiveSheet.VPageBreaks(1).DragOff Direction:=xlToRight, RegionIndex:=1
x = x + 1
Loop Until ActiveSheet.VPageBreaks.Count = 0

'save as pdf. **Please edit yourfilepath!**
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:yourfilepath" & mywsname & ".pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
Next y
End Sub

【讨论】:

    猜你喜欢
    • 2016-02-13
    • 2012-01-11
    • 2019-03-06
    • 1970-01-01
    • 2013-09-03
    • 2015-08-19
    • 2017-01-08
    • 2013-01-19
    相关资源
    最近更新 更多