【问题标题】:How to manipulate MS Excel page breaks from MS Access 2003 VBA如何从 MS Access 2003 VBA 操作 MS Excel 分页符
【发布时间】:2014-09-29 10:12:53
【问题描述】:

我有一个 MS Access VBA 代码,它可以生成如下所示的 Excel 电子表格,我需要从中进行分页输出:

进入这个:

在 MS Access VBA 中以编程方式。

我已经尝试了一堆代码(参见下面的 sn-ps),但不知何故,它们都没有成功,甚至没有任何改变。

代码片段 #1)

ActiveWindow.View = xlPageBreakPreview
ActiveSheet.ResetAllPageBreaks

i = 1
If ActiveSheet.HPageBreaks.Count > 0 Then
    Do
        Set ActiveSheet.HPageBreaks(i).Location = Range("A" & (i * 70) + 1)
        If i = ActiveSheet.HPageBreaks.Count Then Exit Do
            i = i + 1
        Loop
End If
Do Until Cells((i * 70) + 3, 1).Value = ""
    ActiveSheet.HPageBreaks.Add Before:=Range("a" & (i * 73) + 1)
        i = i + 1
    Loop
ActiveWindow.View = xlNormalView

代码片段 #2)

Dim Rng As Excel.Range

Set Rng = xls.Rows("1:75")
Rng(75).PageBreak = -4135

代码片段 #3)

xls.HPageBreaks.Add Before:=xls.Cells(73, 1)

非常感谢您对此提供的任何帮助。非常感谢! :)

【问题讨论】:

    标签: excel vba ms-access


    【解决方案1】:

    我不太了解您的 sn-ps,但根据屏幕截图,您想将其打印在包含所有内容的页面上。像这样的东西在 excel 中将打印区域设置为 1 页 x 1 页 -

    Sub breaks()
    Dim rLastCol As Long
    Dim rLastRow As Long
    With ActiveSheet
    rLastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
    rLastCol = .Cells(1, .Columns.Count).End(xlToLeft).Column
    
        With .PageSetup
    .PrintArea = Range("A1", Cells(rLastRow, rLastCol)).Address
    .FitToPagesWide = 1
    .FitToPagesTall = False
        End With
    
    End With
    End Sub
    

    当然,这使用了 A 列和第 1 行中最后使用的单元格,所以最右下角的非空白单元格。

    【讨论】:

    • 我最初要求此代码在 MS Access 中运行,但从长远来看,我认为最好在 MS Excel 文件本身中运行。因此,在此代码中稍作调整(在 .PageSetup 下,我添加了 .Zoom = False,并更改了 .FitToPagesTall = 1),我设法让它工作。非常感谢你的帮助。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多