Vba 在Excel中插入分页符以拆分数据进行打印。pdf

Vba 在Excel中插入分页符以拆分数据进行打印。pdf,vba,excel,pdf,printing,Vba,Excel,Pdf,Printing,我正在使用一个可以包含动态行的Excel文件。我把它导出到.pdf,效果很好。问题是所有内容都在.pdf文件的一个页面上 是否在VBA中为.pdf文件插入分页符 编辑:这是我的分页符代码。似乎无法工作 If count > 30 Then ' count is the number of row. Break at every 15 rows Set ws = Range("A1", "K" & count) 'The range of the document

我正在使用一个可以包含动态行的Excel文件。我把它导出到.pdf,效果很好。问题是所有内容都在.pdf文件的一个页面上

是否在VBA中为.pdf文件插入分页符

编辑:这是我的分页符代码。似乎无法工作

If count > 30 Then ' count is the number of row. Break at every 15 rows
        Set ws = Range("A1", "K" & count) 'The range of the document
        Dim ii As Integer
        ii = 21 ' first page break
        While count > 0
            If count > 15 Then ' no page break if there is less than 15 rows
             ws.Rows(ii).EntireRow.PageBreak = xlPageBreakManual
            End If               
            ii = ii + 15
            count = count - 15
        Wend
End If
编辑2:我没有找到任何方法在pdf文件中创建分页符。然而,我仍然解决了我的问题。我只是找到一个模块让vba运行外部进程并等待它们。是的

我将pdf文件的每一页都保存为临时文档,并将其路径/名称发送到我创建的C#控制台应用程序。我正在使用库来处理pdf文档,然后将它们合并到一个文件中


希望它能帮助其他人。

您可以像这样设置分页符:

Worksheets("Sheet1").HPageBreaks.Add Before:=Worksheets("Sheet1").Rows(25)
Worksheets("Sheet1").VPageBreaks.Add Before:=Worksheets("Sheet1").Columns("J")

Worksheets("Sheet1").Rows(25).PageBreak = xlPageBreakManual
Worksheets("Sheet1").Columns("J").PageBreak = xlPageBreakManual
With Range(blabla)
    .Rows(.Rows.Count).EntireRow.PageBreak = xlPageBreakManual
    '.Rows(Int(.Rows.Count/2)).EntireRow.PageBreak = xlPageBreakManual
    .Columns(.Columns.Count).EntireColumn.PageBreak = xlPageBreakManual
End With
仅供参考,我没有设法使
范围.PageBreak
正常工作

或者对于某个范围,类似于以下内容:

Worksheets("Sheet1").HPageBreaks.Add Before:=Worksheets("Sheet1").Rows(25)
Worksheets("Sheet1").VPageBreaks.Add Before:=Worksheets("Sheet1").Columns("J")

Worksheets("Sheet1").Rows(25).PageBreak = xlPageBreakManual
Worksheets("Sheet1").Columns("J").PageBreak = xlPageBreakManual
With Range(blabla)
    .Rows(.Rows.Count).EntireRow.PageBreak = xlPageBreakManual
    '.Rows(Int(.Rows.Count/2)).EntireRow.PageBreak = xlPageBreakManual
    .Columns(.Columns.Count).EntireColumn.PageBreak = xlPageBreakManual
End With

这是您更正的代码:

Sub test_Wanceslas()
Dim Ws As Worksheet, _
    Rg As Range, _
    LastRow As Long, _
    Count As Long, _
    ii As Long

ii = 21 ' first page break
Set Ws = ActiveSheet

With Ws
    LastRow = .Range("A" & .Rows.Count).End(xlUp).Row
    Count = LastRow
    Set Rg = .Range("A1", "K" & Count) 'The range of the document

    If LastRow > 30 Then ' count is the number of row. Break at every 15 rows
        .ResetAllPageBreaks
        .PageSetup.PrintArea = Rg.Address

        While Count > 0 And ii < LastRow
            If Count > 15 Then ' no page break if there is less than 15 rows left
                '.Rows(ii).PageBreak = xlPageBreakManual
                .HPageBreaks.Add Before:=.Rows(ii)
            End If
            ii = ii + 15
            Count = Count - 15
        Wend
    End If
End With

End Sub
子测试_Wanceslas()
将Ws设置为工作表_
Rg作为射程_
最后一行,只要_
只要_
二、只要
ii=21'第一个分页符
设置Ws=ActiveSheet
与Ws
LastRow=.Range(“A”&.Rows.Count).End(xlUp).Row
计数=最后一行
将Rg=.Range(“A1”、“K”和Count)”设置为文档的范围
如果LastRow>30,则“count”是行数。每15行休息一次
.重置所有分页符
.PageSetup.PrintArea=Rg.地址
当计数>0且ii<最后一行时
如果计数>15,则“如果剩下的行数少于15行,则无分页符”
'.Rows(ii).PageBreak=xlPageBreakManual
.HPageBreaks.Add Before:=.Rows(ii)
如果结束
ii=ii+15
计数=计数-15
温德
如果结束
以
端接头

实际上,我正在将一个范围导出为pdf,因为我不想导出整个工作表。在工作表中有一个我不想在pdf文件中看到的额外按钮。分页符似乎不适用于某个范围……请查看编辑,您只需要在您的范围内工作!;)谢谢,但还是不行。我已经编辑了我的文章并添加了我的代码,如果你能看到任何东西的话。我似乎无法使
范围.PageBreak
正常工作,但我更正了你的代码并包含了设置分页符的其他方法!;)谢谢你修改我的代码。事实上,范围是好的,但我仍然得到同样的问题。我的pdf文件中没有分页符。我开始考虑制作一个以上的pdf文件,然后将它们合并在一起