增加Excel PrintArea的最大字符串长度

时间:2012-07-10 09:29:55

标签: excel vba excel-vba

我前一段时间问了一个关于Excel打印区域的最大字符串长度的问题:

Maximum String Length of PrintArea in Excel

对于Excel 2010,

打印区域设置为255。

我认为这是一个只读属性但是(抓住吸管),有没有办法增加打印区长度? Excel插件可能吗?

如果没有,一旦达到最大值255,我将不得不以编程方式设置一个新的打印区域。

修改

我尝试过以下答案:

范围(“A1:C3,A5:B6,C7:D8,E1:E2,G1:G2,A10:A11,A13:A14,A16:A17,A19:A20,A22:A23,A25:A26, A28:A29,A30:A31,A33:A35,A37:A38,A40:A41,A43:A44,A46:A47,A49:A50,A52:A53,A55:A56,A58:A59,A61:A63,A65: A66,A68:A69,A71:A72,A74:A75,A77:A78,A80:A81,A83:A84,A86:A87,A88:A89,A91:A92“)。Name =”MyNamedRange“

工作正常 - 253个字符。

范围(“A1:C3,A5:B6,C7:D8,E1:E2,G1:G2,A10:A11,A13:A14,A16:A17,A19:A20,A22:A23,A25:A26, A28:A29,A30:A31,A33:A35,A37:A38,A40:A41,A43:A44,A46:A47,A49:A50,A52:A53,A55:A56,A58:A59,A61:A63,A65: A66,A68:A69,A71:A72,A74:A75,A77:A78,A80:A81,A83:A84,A86:A87,A88:A89,A91:A92,A94:A95“)。Name =”MyNamedRange“< / p>

运行时错误1004 - (261个字符)

所以,我想我现在应该设置多个命名范围,然后设置活动工作表打印区域,依次使用每个命名范围?

非常感谢。

2 个答案:

答案 0 :(得分:2)

作弊命名范围:

<击> Range("A1:C3,A5:B6,C7:D8").Name = "MyNamedRange"
然后
ActiveSheet.PageSetup.PrintArea = "MyNamedRange"

似乎命名范围也有255个字符限制。

下一个解决方案是隐藏您不想要打印的行:

Private Sub Workbook_BeforePrint(Cancel As Boolean)
    If ActiveSheet.Name = "Sheet1" Then
        Cancel = True ' cancel default print method so we can print out stuff ourselves
        Application.EnableEvents = False
        Application.ScreenUpdating = False
        With ActiveSheet
            .Rows("12").EntireRow.Hidden = True ' hide the rows you want hidden
            .Rows("15").EntireRow.Hidden = True ' hide the rows you want hidden
            .PrintOut
            .Rows("12").EntireRow.Hidden = False ' unhide them after
            .Rows("15").EntireRow.Hidden = False
        End With
        Application.EnableEvents = True
        Application.ScreenUpdating = True
    End If
End Sub

答案 1 :(得分:1)

我将整个打印区域分成不超过255个字符的块。

我将每个块导出到一个单独的excel行中,然后遍历每一行,设置excel打印区域,并打印出来。