使用VBA格式化Excel工作表

时间:2012-07-09 06:55:06

标签: vba printing excel-vba excel-2007 excel

我有什么

Excel 2007工作表。 范围A1中的信息:C48(固定)在同一工作簿中的多个工作表中。

我需要什么

我需要在具有正常边距的Letter尺寸纸张中打印此选项。 但条件是我需要适合选择的宽度,即3列到1页。 我必须保持列的宽度不变,以保持恒定的字体大小。 我想用VBA做到这一点。

这是我试过的代码:

Sub printing()
    Dim w1 As Single, w2 As Single, w3 As Single
    Application.ScreenUpdating = False
    w1 = 62
    w2 = 24.71
    w3 = 22.14
    For i = 1 To ActiveWorkbook.Worksheets.Count
    Worksheets(i).Activate
    ActiveSheet.Columns(1).ColumnWidth = w1
    ActiveSheet.Columns(2).ColumnWidth = w2
    ActiveSheet.Columns(3).ColumnWidth = w3

    ActiveSheet.Range("A1:C48").Select

    With Worksheets(i).PageSetup
        .PaperSize = xlPaperLetter
        .Zoom = False
        .FitToPagesWide = 1
        .FitToPagesTall = 1
        .LeftMargin = Application.InchesToPoints(0.5)
        .RightMargin = Application.InchesToPoints(0.75)
        .TopMargin = Application.InchesToPoints(1.5)
        .BottomMargin = Application.InchesToPoints(1)
        .HeaderMargin = Application.InchesToPoints(0.5)
        .FooterMargin = Application.InchesToPoints(0.5)
    End With
    Next i
    Application.ScreenUpdating = True
End Sub

虽然这会调整列的大小并设置其他属性,但分页符仍然保持不变,当我尝试打印时,还包括第4列。我不想手动拖动分页符,因为这会调整字符大小。我更喜欢设置列宽,使其适合具有正常边距的信纸。

我真的很感激任何建议。

1 个答案:

答案 0 :(得分:1)

如果我理解正确,我认为你想要的是PageSetup.PrintArea属性。你可以添加:

.PrintArea= "$A$1:$C$48"

到您的阻止。